我正在尝试查询实体/表并确定是否存在与项目列表匹配的记录。
换句话说,我有一个名称数组,我想构建查询来执行以下操作:
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();
}
Contains
调用应该可以正常工作,IN ()
在生成SQL查询时,Entity Framework会将其转换为子句。
但是,a =>
当您尝试调用时,您的代码丢失了Contains
:
await _dataContext.FindAllAsync<DocumentsView>(a => fileList.Contains(a.name)));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句