0

キーとして列名を含む辞書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); 
    }
}
4

1 に答える 1

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

于 2012-09-24T12:31:53.577 に答える