C# 从列表中查找不同的元素<;列表<;字符串>&燃气轮机;

C# 从列表中查找不同的元素<;列表<;字符串>&燃气轮机;,c#,asp.net-mvc,linq,list,asp.net-mvc-5,C#,Asp.net Mvc,Linq,List,Asp.net Mvc 5,我想根据内部列表的值在嵌套列表中查找不同的元素 当前列表结构:下图显示了一个表,其中每一行都是字符串列表,整个表是使用字符串列表生成的 这样使用: var result = allrow.GroupBy(c => String.Join(",", c)) .Select(c => c.First().ToList()).ToList(); 您还可以实现一个EqualityComparer类,并在LINQ的Distin

我想根据内部列表的值在嵌套列表中查找不同的元素

当前列表结构:下图显示了一个表,其中每一行都是字符串列表,整个表是使用字符串列表生成的

这样使用:

var result = allrow.GroupBy(c => String.Join(",", c))
                                .Select(c => c.First().ToList()).ToList();
您还可以实现一个
EqualityComparer
类,并在LINQ的
Distinct
方法中使用它。但是我认为使用
GroupBy
来实现这个目的会更简单。

像这样使用:

var result = allrow.GroupBy(c => String.Join(",", c))
                                .Select(c => c.First().ToList()).ToList();

您还可以实现一个
EqualityComparer
类,并在LINQ的
Distinct
方法中使用它。但我认为使用
GroupBy
实现这个目的会更简单。

好的,这里有一个类似于@S.Akbari的解决方案,应该可以帮助您了解基于LINQ的解决方案实际上是如何工作的

var rowMap = new Dictionary<string, List<string>>();

foreach (var row in allrow)
{
    string key = string.Join(",", row);

    if (rowMap.ContainsKey(key) == false)
    {
        rowMap.Add(key, row);
    }
}

var result = rowMap.Values.ToList();
var rowMap=newdictionary();
foreach(所有行中的var行)
{
string key=string.Join(“,”行);
if(rowMap.ContainsKey(key)==false)
{
添加(键,行);
}
}
var result=rowMap.Values.ToList();

好的,这里有一个类似于@S.Akbari的解决方案,应该可以帮助您了解基于LINQ的解决方案实际上是如何工作的

var rowMap = new Dictionary<string, List<string>>();

foreach (var row in allrow)
{
    string key = string.Join(",", row);

    if (rowMap.ContainsKey(key) == false)
    {
        rowMap.Add(key, row);
    }
}

var result = rowMap.Values.ToList();
var rowMap=newdictionary();
foreach(所有行中的var行)
{
string key=string.Join(“,”行);
if(rowMap.ContainsKey(key)==false)
{
添加(键,行);
}
}
var result=rowMap.Values.ToList();

@AndriyHoren…是的,这将删除
列表中重复的
列表。试试看。对,因为你会选择group@AndriyHoren...Yes这将删除
列表
中重复的
列表
。试试看。好的,因为您将选择组,所以您可以使
IEqualityComparer
与自定义
List
IEqualityComparer
配合使用
List
自定义
IEqualityComparer