2013-07-15 57 views
2

我有字符串Header1的2列表和Header2如何從列表中刪除字符串對象?

List<String> Header1 = new List<String>(); 
Header1.add("String1"); 
Header1.add("String2"); 
Header1.add("String3"); 
Header1.add("String4"); 

List<String> Header2 = new List<String>(); 
    Header2.add("STRING1"); 
    Header2.add("STRING2"); 

我想通過忽略大小寫到刪除這些條目 「String1中」 和 「String2的」 在Header2Header1

任何想法如何使用LINQ或字符串操作。

謝謝

+0

你想從Header1中刪除出現在Header2中的字符串? – Usman

+0

@Usman,沒錯。 – Kiran

回答

6

有沒有需要Linq。該List類有一個方便RemoveAll方法,你可以使用:

var stringsToRemove = new[] { "string1", "string2" }; 
var comp = StringComparison.InvariantCultureIgnoreCase; 
Header1.RemoveAll(s => Header2.Any(t => s.Equals(t, comp))); 
+0

謝謝,但我想使用列表'Header2'。我不知道Header2 – Kiran

+0

@ www.sapnaedu.in中的列表數。對不起,我首先想念這個問題。查看我的更新回答 –

+0

非常感謝您的快速回答:) – Kiran

3

你可以這樣做:

Header1.Except(Header2, new EqualityComparer<string>((a, b) => a.Equals(b, StringComparison,OrdinalIgnoreCase))); 

EqualityComparer允許您指定自定義比較,以便當string s爲它只會返回true平等而不考慮案件。

MSDN documentation

7
Header1.RemoveAll(x => 
      Header2.Contains(x, StringComparer.CurrentCultureIgnoreCase)); 
3

我不認爲LINQ允許你修改集合。但是,如果你快樂,從而產出未經頭2項新的集合,嘗試這樣的事情:

var result = Header1.Except(Header2, StringComparer.OrdinalIgnoreCase); 

如果你想修改原來的列表中,嘗試這樣的事情:

Header1.RemoveAll(item => Header2.Contains(item, StringComparer.OrdinalIgnoreCase)); 
相關問題