Linq to sql多列

时间:2012-09-24 12:23:49

标签: c# linq linq-to-sql

我有一个字典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); 
    }
}

1 个答案:

答案 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循环结束时,originalQueryAND中保留的所有条件逻辑filters。{/ p>