2010-03-18 51 views
1

我不能完全弄清楚为什么这个LINQ的声明是不工作,因为我所期望的:LINQ到对象 - SELECT DISTINCT

Dim distinctSurchargesList = (From thisparent As Parent In ThisParentCollection _ 
            From thisChild As Child In thisparent.theseChildren _ 
            Select New With {.childId = thischild.Id}).Distinct() 

我会假设,这将创建匿名类型的一个新的集合,这将是明显的。相反,它会创建一个集合,其大小为“ThisParentCollection”,其中包含重复的“MyAnonymousType”(重复的id)。

任何人都可以告诉我哪里会出错吗?不是由childId字段的值 -

感谢

回答

4

你收集匿名类型的会进行比较,以供参考值相等。每个匿名类型都有不同的对象引用,因此它们都是不同的。

只需选择ID,并且不要将其投影到匿名类型中。