我想根据内部列表的值找到嵌套列表中的不同元素。
当前列表结构:下图显示了一个表,其中每一行都是一个字符串列表,整个表是使用字符串列表列表生成的
var eachrow = new List<String>();
var allrow = new List<List<String>>();
//eachrow is populated from db. After a complete row is populated it is added to allrow
//Sample
//eachrow[0] = "no value"
//eachrow[1] = "67" and so on
//allrow[0] = {no value,67,89,0,0,0,67,34}
//allrow[1] = {no value,201,45,102,0,0,47,12} and so on
现在我想消除表中的重复行。我不是在寻找Javascript的解决方案。生成HTML表仅用于显示问题。
我尝试了什么
allrow = allrow.Distinct().ToList();
//Doesnt remove duplicates
答案 0 :(得分:4)
像这样使用GroupBy
:
var result = allrow.GroupBy(c => String.Join(",", c))
.Select(c => c.First().ToList()).ToList();
此外,您可以实现EqualityComparer
类并在LINQ的Distinct
方法中使用它。但我认为,正如我所提到的那样,GroupBy
用于此目的会更简单。
答案 1 :(得分:2)
好的,这里是@ 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();