2011-11-03 61 views
2

假設我有一個字符串集合。 如何選擇所有不包含特定參數值的元素?linq - 選擇不等於東西的元素

List<string> TheList = ..... 

var TheCleanList = (from s in TheList 
        where s != parameter 
        select s).ToList(); 

我想其中S!=參數,但我不知道是否有一個更清潔的方式來做到這一點。

謝謝。

+0

就這樣很好......它有什麼問題嗎? –

回答

6

如果您不需要列表中,您不需要LINQ的這個 - 使用Remove() - 這避免了創建一個新的列表:

如果你想刪除等於Parameter所有字符串:

TheList.RemoveAll(s => s == Parameter); 

如果你想刪除包含Parameter(不清楚從你的問題)的所有字符串:

TheList.RemoveAll(s => s.Contains(Parameter)); 
+0

好的,很酷;我需要包含版本。再次感謝。 – frenchie

3

你的意思是:

List<string> TheList = ..... 

var TheCleanList = (from s in TheList 
        where !s.Contains(parameter) 
        select s).ToList(); 
2

您可以使用String.Contains

var TheCleanList = (from s in TheList 
        where !s.Contains(parameter) 
        select s).ToList(); 

或者

var TheCleanList = TheList.Where(s => !s.Contains(parameter)).ToList(); 

String.Contains是區分大小寫的。如果你想有一個案例鈍感:

string lower = parameter.ToLower(); 
... 
where s.ToLower().Contains(lower) 
+1

只有一個建議,可能會提到string.contains像!=,==等是一個區分大小寫的評估。正如我所看到的很多,包括我自己忘記有時Linq不是TSQL和它的大小寫敏感。 – Nickz