簡體   English   中英

如何從列表中刪除字符串對象?

[英]How to remove an string object from a list?

我有2個String Header1Header2列表

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");

我想通過忽略區分大小寫Header2Header1Header2中的這些條目“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而不考慮大小寫。

MSDN文檔

我不認為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM