簡體   English   中英

如何從列表中刪除相同的項目 <string> ?

[英]How to remove identical items from List<string>?

我有一個List,在每次sql查詢以某個值運行時從db中選擇用戶並在時間中選擇一個用戶因此我不能限制sql中的相同用戶。

我有以下列表:

list[0] = "jerry"
list[1] = "tom"
list[2] = "jerry"

我希望從列表中刪除任何(在我的情況下,第一個或最后一個並不重要)。

謝謝

IEnumerable<string> uniqueUsers = list.Distinct();

您還可以使用HashSet:

HashSet<string> uniqueUsers = new HashSet<string>(list);

LINQ可以解決這個問題:

List<string> names = new List<string> { "Tom", "Jerry", "Tom" };
IQueryable<string> distinctItems = names.Distinct();

如果需要列表類型,只需調用ToList():

distinctItems.ToList();

這是MSDN的一個例子。

編輯:非LINQ示例(使用List類中的 Contains()):

List<string> names = new List<string> { "Tom", "Jerry", "Tom" };
List<string> distinctNames = new List<string>();
foreach (var name in names)
{
    if (!distinctNames.Contains(name))
    {
        distinctNames.Add(name);
    }
}

您可以使用Distinct()LINQ擴展。

var list = new List<string> { "Tom", "Jerry", "Tom" };

var uniqueList = list.Distinct();

使用Distinct ,如其他答案中所建議的那樣,將使原始列表保持原樣並返回包含列表中不同項的單獨IEnumerable<>序列。

另一種方法是使用RemoveAll直接從原始列表中刪除重復項:

var temp = new HashSet<string>();
yourList.RemoveAll(x => !temp.Add(x));

你可以使用list.distinct();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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