我有一个List<List<int>>
,其中包含以下值:
[1] = 1,2
[2] = 4,5,6
[3] = 1,3
我想要做的是检索具有唯一值的简单列表=&gt; 1,2,3,4,5,6(第一名在原始名单中重复)。
如果是1D List,我会用
variable.Select(n=>n).Distinct();
然而,当我尝试使用
时variable.Select(n=>n.Select(x=>x)).Distinct();
我有2D列表(我猜有唯一值)。我怎么解决这个问题? 感谢
答案 0 :(得分:8)
您可以将SelectMany
与Distinct
var uniqueList = list.SelectMany(x => x).Distinct().ToList();
SelectMany
将List<List<int>>
压平为IEnumerable<int>
,Distinct
消除了重复项。
答案 1 :(得分:1)
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));
}
答案 2 :(得分:1)
如果你想要一个不同的整体整数,你可以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();
}