c# LINQ Distinct() 在多级列表上
本文关键字:多级 列表 LINQ Distinct | 更新日期: 2023-09-27 18:21:41
我有一个具有以下值的List<List<int>>
:
[1] = 1,2
[2] = 4,5,6
[3] = 1,3
我想做的是检索唯一值 => 1,2,3,4,5,6 的简单列表(第一个在原始列表中重复(。
如果是 1D 列表,我会使用
variable.Select(n=>n).Distinct();
但是当我尝试使用
variable.Select(n=>n.Select(x=>x)).Distinct();
我得到了 2D 列表(我猜有唯一值(。我该如何解决这个问题?谢谢
你可以将
SelectMany
与Distinct
一起使用
var uniqueList = list.SelectMany(x => x).Distinct().ToList();
SelectMany
将List<List<int>>
拼成IEnumerable<int>
,Distinct
消除重复项。
private static void Main()
{
List<List<int>> xss = new List<List<int>>()
{
new List<int>() {1, 2},
new List<int>() {4, 5, 6},
new List<int>() {1, 3}
};
var xs = xss.SelectMany(x => x).Distinct();
Console.WriteLine(string.Join(" ",xs));
}
如果你
想要一个不同的整体整数,你可以做SelectMany
,但如果你想要distinc列表,你可以做这样的事情;
void Main()
{
List<List<int>> xss = new List<List<int>>()
{
new List<int>() {1, 2},
new List<int>() {1, 2},
new List<int>() {1, 2},
new List<int>() {4, 5, 6},
new List<int>() {1, 3}
};
xss.Select (x => string.Join(",", x)).Distinct();
}