LINQ在课程项目上有所区别吗?

时间:2009-12-18 20:59:29

标签: linq distinct anonymous-types

注意这个问题类似于this one,除了我没有使用linq-to-sql,所以“let”不可用。

基本上我选择了

类型
... .Select(c => new SampleClass { Id = c.Location.Name, Name = c.Location.Name }).Distinct().ToList()

以前曾经工作过的

... .Select(c => c.Location.Name).Distinct().ToList()

如何对SampleClass中的一个项目进行不同的调用?

2 个答案:

答案 0 :(得分:3)

您可以按键对项目进行分组,然后选择要用作值的组中的项目。我以FirstOrDefault为例:

... .Select(c => new SampleClass { Id = c.Location.Name, Name = c.Location.Name })
    .GroupBy(c => c.Id)
    .Select(group => group.FirstOrDefault())
    .ToList()

答案 1 :(得分:0)

这就是您所需要的:http://sprokhorenko.blogspot.com/2009/11/convenient-distinct.html

这是IEnumerable的扩展,允许你为任何字段(甚至几个使用lambdas的字段)使用.Distinct(),它可以为你动态创建IEqualityComparer。