我的代码类似于this post
List<MyObject> myList = new List<MyObject>(){new MyObject { Number1 = 1, Number2 = 2, Number3 = 3 },
new MyObject { Number1 = 1, Number2 = 2, Number3 = 3 }};
var listWithoutDuplicated = myList
.GroupBy(x => new { x.Number1, x.Number2, x.Number3 })
.Select(x => x.First());
int counter = 0;
foreach (var item in listWithoutDuplicated)
{
counter ++;
}
该代码会返回counter = 1
,因此效果很好,但为什么有必要.Select(x => x.First());
而不仅仅是.First();
?
// This code would not remove duplicates.
var listWithoutDuplicated = myList
.GroupBy(x => new { x.Number1, x.Number2, x.Number3 })
.First();
非常感谢。
答案 0 :(得分:3)
.First()
从一系列组中返回第一组。
Select(group => group.First())
接受一系列组并返回表示每个组中第一个项目的新序列。
两者都是完全有效的事情,也是非常不同的。您可以通过简单地打印出结果来看到这一点,或者就此而言,只需查看结果的类型(如果您不使用var
,这将在代码中更明显。)