2013-07-15 3 views
2

У меня есть 2 списка строки Header1 и 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" в Header2 из Header1, игнорируя чувствительность к регистру.

Любая идея, как это сделать, либо с помощью LINQ, либо с помощью операции с строкой.

Thanks

+0

вы хотите удалить строки из заголовка 1, которые присутствуют в Header2? – Usman

+0

@ Усман, да, это правильно. – 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

Спасибо, Но я бы хотел использовать List '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 является равный без рассмотрения случая.

MSDN documentation

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

Я не думаю, что LINQ позволяет изменять коллекции. Тем не менее, если вы счастливы, чтобы произвести новую коллекцию без предметов из HEADER2, попробовать что-то вроде этого:

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

Если вы хотите изменить первоначальный список, попробовать что-то вроде этого:

Header1.RemoveAll(item => Header2.Contains(item, StringComparer.OrdinalIgnoreCase)); 
Смежные вопросы