通过查询 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; }
}
我需要:
查询context.Images,通过Id查找对应的图片;
获得这些图片的投票并填写到列表中。
图像实体具有相同的属性:
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();
我有以下内容:
List<ImageModel> Images;
此列表中的所有图像的 Votes = 0 且 ImageModel 为:
public ImageModel {
public Int32 Id { get; set; }
public Int32 Votes { get; set; }
}
我需要:
查询context.Images,通过Id查找对应的图片;
获得这些图片的投票并填写到列表中。
图像实体具有相同的属性:
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();