如何从List <string>中删除相同的项目?

eug*_*neK 4 c# asp.net

我有一个List,在每次sql查询以某个值运行时从db中选择用户并在时间中选择一个用户因此我不能限制sql中的相同用户.

我有以下列表:

list[0] = "jerry"
list[1] = "tom"
list[2] = "jerry"
Run Code Online (Sandbox Code Playgroud)

我希望从列表中删除任何(在我的情况下,第一个或最后一个并不重要).

谢谢

Lee*_*Lee 22

IEnumerable<string> uniqueUsers = list.Distinct();
Run Code Online (Sandbox Code Playgroud)

您还可以使用HashSet:

HashSet<string> uniqueUsers = new HashSet<string>(list);
Run Code Online (Sandbox Code Playgroud)


Sco*_*ott 15

LINQ可以解决这个问题:

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

如果需要列表类型,只需调用ToList():

distinctItems.ToList();
Run Code Online (Sandbox Code Playgroud)

这是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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*ide 6

您可以使用Distinct()LINQ扩展.

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

var uniqueList = list.Distinct();
Run Code Online (Sandbox Code Playgroud)