通过排队EF DBSet填写列表中的缺失数据

时间:2015-01-23 22:17:54

标签: c# entity-framework

我有以下内容:

List<ImageModel> Images;

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

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

我需要:

  1. 查询context.Images并按Id找到对应的图像;

  2. 获取这些图片的投票并填入列表。

  3. 图片实体具有相同的属性:

    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的那些...所以基本上我需要在图像和上下文之间进行检测.Ind的图像并将投票填入图像列表。

1 个答案:

答案 0 :(得分:1)

试试这个:

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

如果您不想调用AsEnumerable方法,则必须先从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();