通过查询 EF DBSet 填充列表中缺失的数据

Fill missing data in list by queering EF DBSet

我有以下内容:

List<ImageModel> Images;

此列表中的所有图像的 Votes = 0 且 ImageModel 为:

public ImageModel {
  public Int32 Id { get; set; }
  public Int32 Votes { get; set; }
}

我需要:

  1. 查询context.Images,通过Id查找对应的图片;

  2. 获得这些图片的投票并填写到列表中。

图像实体具有相同的属性:

public Image {
  public Int32 Id { get; set; }
  public Int32 Votes { get; set; }
  // More properties
}

更新

我可以这样做:

context.Images.Select(x => new { Id = x.Id, Votes = x.Votes }).ToList()

然后遍历 ImageModel 列表并填充投票...

但我不想查询所有图像......只有那些在 ImageModel 列表中具有 Id 的图像......所以基本上我需要图像和 context.Images 之间的交叉点通过 Id 并填写投票进入图片列表。

试试这个:

 context.Images.AsEnumerable().Where(x=>Images.Any(i=>i.Id==x.Id)).Select(x => new { Id = x.Id, Votes = x.Votes }).ToList();

如果您不想调用 AsEnumerable 方法,那么您必须先 select 来自 Image 列表的 ID,如下所示:

 var ids = Images.Select(e => e.Id);
 context.Images.Where(x=>ids.Contains(x.Id)).Select(x => new { Id = x.Id, Votes = x.Votes }).ToList();