我正在尝试查询实体/表并确定是否存在与项目列表匹配的记录。
换句话说,我有一个名字数组,我想建立我的查询来做类似的事情:
string[] fileList = {"Clients", "Jobs", "People"};
ICollection<DocumentsView> documentList = await _dataContext.FindAllAsync<DocumentsView>(fileList.Containts(a.name)));
以上显然不起作用,但是有一些方法可以做到吗? 我现在正在做这个,它正在工作,但必须有一个更好的方法......如果我想扩展要比较的项目列表怎么办?等
ICollection<DocumentsView> documentList = await _dataContext.FindAllAsync<DocumentsView>(a=>a.name == "Clients" && a.name == "Jobs" && a.name == "People");
这是DbContext查询的FindAllAsync方法:
public async Task<ICollection<T>> FindAllAsync<T>(Expression<Func<T, bool>> match) where T : class
{
return await _context.Set<T>().Where(match).ToListAsync();
}
答案 0 :(得分:1)
Contains
调用应该可以正常工作,实体框架会在生成SQL查询时将其转换为IN ()
子句。
但是,当您尝试拨打a =>
时,您的代码会丢失Contains
:
await _dataContext.FindAllAsync<DocumentsView>(a => fileList.Contains(a.name)));