我有一个函数需要 3 个 string[]
,然后使用 EF6 查询我的数据库以尝试找到匹配项。这些列表可以没有任何变量,也可以包含一个或多个变量。
using (var db= new Db(ConnectionString))
{
var results =
await
db.dbases.Where(
w =>
portfolioSelected.Any(a => a == w.portfolio) &&
statusSelected.Any(a => a == w.statusname) &&
deskSelected.Any(a => a == w.assignedto)
).ToListAsync();
}
尝试此查询时,我得到零结果。
我该如何编写这个列表,以便 3 个列表可以具有任何组合(包括为空),并且获得我想要的结果?
最佳答案
根据 Jeroen Heiers 的评论,我能够通过检查 string[]
是否为空并分部分创建查询来分解查询。
using (var db = new Db(ConnectionString))
{
IQueryable<dbase> query = cmax.dbases.Where(w => w != null);
var results = new List<dbase>();
if (portfolioSelected != null)
query = query.Where(w => portfolioSelected.Any(a => a == w.portfolio));
if (statusSelected != null)
query = query.Where(w => statusSelected.Any(a => a == w.statusname));
if (deskSelected != null)
query = query.Where(w => deskSelected.Any(a => a == w.assignedto)); break;
results = await query.ToListAsync();
}
关于c# - 使用可能为空的列表通过 EF6 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843818/