[英]How to remove an string object from a list?
我有2個String 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");
我想通過忽略區分大小寫Header2
從Header1
中Header2
中的這些條目“String1”和“String2”。
任何想法如何使用LINQ
或字符串操作。
謝謝
Header1.RemoveAll(x =>
Header2.Contains(x, StringComparer.CurrentCultureIgnoreCase));
Linq沒有必要。 List
類有一個方便的RemoveAll
方法,你可以使用:
var stringsToRemove = new[] { "string1", "string2" };
var comp = StringComparison.InvariantCultureIgnoreCase;
Header1.RemoveAll(s => Header2.Any(t => s.Equals(t, comp)));
你可以做:
Header1.Except(Header2, new EqualityComparer<string>((a, b) => a.Equals(b, StringComparison,OrdinalIgnoreCase)));
EqualityComparer
允許您指定自定義比較器,以便在string
s相等時僅返回true而不考慮大小寫。
我不認為LINQ允許您修改集合。 但是,如果您很樂意在沒有Header2的項目的情況下生成新的集合,請嘗試以下方法:
var result = Header1.Except(Header2, StringComparer.OrdinalIgnoreCase);
如果您確實想要修改原始列表,請嘗試以下操作:
Header1.RemoveAll(item => Header2.Contains(item, StringComparer.OrdinalIgnoreCase));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.