我有一个字典Dictionary<string, List<string>> FilterDictionary
,其中包含一个列名作为键,该键的值是一个将用作where子句的条件列表。
我需要查询我的数据库,并查询字典中的每个列,并使用该键列表中的条件查询该列。
只是想知道最好的方法是什么?
这是我想要实现的目标,但显然我知道它并不像columnName == filterCriteria
那么简单。
var originalQuery = from p in productContext.Products
select p;
foreach (var item in FilterDictionary)
{
string columnName = item.Key;
foreach (var filterCriteria in FilterDictionary)
{
originalQuery.Where(columnName == filterCriteria);
}
}
答案 0 :(得分:1)
我会做这样的事情而不是收集过滤条件:
var filters = new List<Expression<Func<Product, Boolean>>>();
filters.Add(e => e.Name == "some name");
var originalQuery = from p in productContext.Products
select p;
originalQuery = filters
.Aggregate(originalQuery, (current, condition) => current.Where(condition));
在foreach
循环结束时,originalQuery
将AND
中保留的所有条件逻辑filters
。{/ p>