2010-07-06 35 views
6

我有一個字符串集合。我需要從這個集合中找出滿足某些條件的字符串,例如該字符串包含A和B或C.這些標準由用戶指定,因此它們是動態的。在Linq它應該是這樣的,在C中動態評估字符串條件#

List<String> items = new List<string> { "sdsdsd", "sdsd", "abc"}; 

var query = from item in items 
      where item.Contains("a") && item.Contains("b") || item.Contains("c")       
      select item; 

我想使where條件動態,以便它可以爲用戶的任何輸入工作。是否可以在不使用任何外部庫的情況下在C#中執行此操作。也許使用Linq或其他內置於.Net框架的其他東西。

感謝, 加里

+0

@Matt Ellen - 同意你的意見 – 2010-07-06 12:59:14

回答

5

雖然你不想使用外部庫,但有一個只是太棒了,那就是PredicateBuilder。謂詞工具讓你能建立一套謂詞來匹配項目,如:

var predicate = PredicateBuilder.True<string>(); 
predicate = predicate 
    .And(p => p.Contains("a")) 
    .And(p => p.Contains("b")); 

var matches = items.Where(predicate);