嗨,我想創建基於使用謂詞表達式搜索字符串列表。如何創建謂詞動態
我有一個類型的產品列表中包含不同的名稱。
List<products> list1 = new List<products>();
list1.Add(new products("sowmya"));
list1.Add(new products("Jane"));
list1.Add(new products("John"));
list1.Add(new products("kumar"));
list1.Add(new products("ramya"));
listBox1.ItemsSource = list1;
現在我想過濾基於用戶輸入的內容。用戶將輸入n的字符串'+'作爲分隔符。接收字符串後,我會通過他們的謂詞對象這樣
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
List<products> list2 = new List<products>();
Expression<Func<products, bool>> predicate = PredicateBuilder.True<products>();
if (e.Key == Key.Enter)
{
string Searchstring = textBox1.Text.ToString().Trim();
string[] separator = new string[] { "+" };
string[] SearchItems=Searchstring.Split(separator,StringSplitOptions.None);
foreach (string str in SearchItems)
{
string temp = str;
predicate =p => p.Name.Contains(temp.ToLower());
}
list2 = list1.AsQueryable().Where(predicate).ToList();
listBox1.ItemsSource = list2;
}
}
如果我輸入多個字符串(sowmya +珍+約翰)的只給最後一個字符串(約翰)的結果,但我想的列表所有匹配的字符串
請回答這個問題,因爲我想這一點,但我無法得到的結果。
請做一些幫助表示感謝。
dup:http://stackoverflow.com/questions/845059/how-do-i-dynamically-create-an-expressionfuncmyclass-bool-predicate – 2011-06-17 09:33:05