如何获取EF Core返回Id
不等于int数组中任何值的实体?
我显示了一堆图片,需要从数据库中选择当前未显示的图片。
到目前为止我得到的代码(不多):
public async Task<IPicture> GetUniquePicture(int[] existingIds)
{
IPicture result = null;
_context.Pictures.Where();
}
答案 0 :(得分:2)
您可以使用 Contains
_context.Pictures.Where(r => !existingIds.Contains(r.ID));
编辑
如评论中Michal所述,如果您需要退回单个实体,请使用 FirstOrDefault
和 Contains
答案 1 :(得分:0)
我将使用FirstOrDefault
方法,该方法接受谓词来指定过滤。谓词使用数组的Contains
方法:
_context.Pictures.FirstOrDefault(picture => ! existingIds.Contains(picture.ID));
请注意,如果花梗滤除了所有元素,FirstOrDefault
将返回null
。
答案 2 :(得分:0)
您可以使用All
_context.Pictures.Where(picture => existingIds.All(id=> id != picture.ID));
,如果您只想返回一个元素而不是一个集合:
_context.Pictures.FirstOrDefault(picture => existingIds.All(id=> id != picture.ID));
答案 3 :(得分:0)
这就是我最终得到的:(随机数是一种自定义扩展方法)
public async Task<IPicture> GetUniquePicture(int[] existingIds)
{
var tmp = await _context.Pictures.Where(p => !existingIds.Contains(p.Id)).ToListAsync();
return tmp.Random().First();
}
谢谢!