我正在使用PredicateBuilder創建一個動態的Where子句來查詢DataTable中的數據。我有一個包含我需要搜索的列名和值的字典。我只是迭代字典,如果關鍵字匹配列名稱,然後將該關鍵字和值添加到謂詞。一切似乎工作正常,直到對數據表運行實際查詢,我得到零記錄:(但如果我用p => p [「年」] =「2010」替換動態謂詞,我得到記錄回到下面的代碼:PredicateBuilder返回零記錄
var objectList = table.AsEnumerable();
Func<DataRow, bool> predicate = GetPredicate(parms, table.Columns);
var list1 = objectList.Where(predicate).ToList();
private static Func<DataRow, bool> GetPredicate(Dictionary <string, string> parms, DataColumnCollection dataColumnCollection)
{
var predicate = PredicateBuilder.False<DataRow>();
foreach (var parm in parms)
{
if (dataColumnCollection.Contains(parm.Key))
{
var copy = parm;
predicate = predicate.And(p => p[copy.Key] == copy.Value);
}
}
return predicate.Compile();
}
任何幫助,將不勝感激:)
可能的重複[爲什麼此代碼與PredicateBuilder不工作?](http://stackoverflow.com/questions/5302382/why-is-this-code-with-predicatebuilder-not-working) –
@AhmadMageed這是一個完全不同的問題。 – svick
@AhmadMageed我在添加鍵值和臨時變量之前將它們包含在謂詞中,沒有幫助:( –