我有2个列表/值数组,x和y。 x列表中有重复项。我需要选择具有唯一x值的x和y元素。使用LINQ,如何编写查询以获取x和y的元素,其中x是唯一的? (我想要每个不同的x的第一个y。)
示例:
x = {1, 1, 2, 3, 4, 4, 5, 6}
y = {3, 4, 5, 6, 7, 8, 9, 10}
我想要的结果是:
newX = {1, 2, 3, 4, 5, 6}
newY = {3, 5, 6, 7, 9, 10}
答案 0 :(得分:2)
您可以使用索引获取第一个x,然后查找y的索引。
05597+2228STT 125 1843 2007 33 2 0 1.3 1.4 7.89 8.89 A0 -017-003 -017-003 +22 1130 055942.46+222815.0
答案 1 :(得分:1)
压缩两个列表,按x
分组,然后从每个组中选择初始项,如下所示:
var pairs = x.Zip(y, (first, second) => new {X = first, Y = second})
.GroupBy(i => i.X)
.Select(g => g.First());
var newX = pairs.Select(p => p.X).ToList();
var newY = pairs.Select(p => p.Y).ToList();
答案 2 :(得分:0)
如果您愿意添加MoreLINQ,可以使用DistinctBy
:
int[] x = { 1, 1, 2, 3, 4, 4, 5, 6 };
int[] y = { 3, 4, 5, 6, 7, 8, 9, 10 };
var result = x.Zip(y, (a,b) => new { x = a, y = b})
.DistinctBy(z => z.x).ToList();
var xresult = result.Select(z => z.x);
var yresult = result.Select(z => z.y);
// Verify the results
Console.WriteLine(String.Join(",", xresult));
Console.WriteLine(String.Join(",", yresult));