我有一个Point
类的列表。
其中两个点在列表中只重复一次,其余的重复两次。
如何使用LINQ找到重复一次的点?
答案 0 :(得分:1)
此解决方案将相同的点组合在一起,允许您查找只有一个成员的组,并返回该成员。
我还没有检查过实际的运行时,但是很有可能它在性能方面比在Where中运行Count()操作的解决方案更好,因为那可能会在O(n ^)运行2)时间,而GroupBy实现可能更优雅。
For Each cell In Intersect(Worksheets("Registration").Range("B:B").Cells,Worksheets("Registration").UsedRange)
答案 1 :(得分:0)
试试这个:
var result = points.Where(p1 => points.Count(p2 => p1.Contains(p2)) == 1);
答案 2 :(得分:0)
using System;
using System.Collections.Generic;
using System.Linq;
class Point
{
int x, y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = value; }
}
}
class Test
{
static void Main()
{
var collection = new List<Point>
{
new Point(1,1),
new Point(1,2),
new Point(1,1),
new Point(1,2),
new Point(3,3),
new Point(4,5),
};
var result = collection.Where(a => collection.Count(b => b.X == a.X && b.Y == a.Y) == 1);
foreach (var val in result)
Console.WriteLine(val.X + "," + val.Y);
}
}
//output:
3,3
4,5