我参考How to: Combin Data with Linq by using joins中的示例。我们有两个列表,第一个持有人物对象(名字和姓氏)。第二个List包含持有人物对象(宠物主人)的宠物对象(名称)。一个人可以拥有> = 0个宠物。
现在发生的事情是我执行了群组加入
Dim result1 = From pers in people
Group Join pet in pets
on pers Equals pet.Owner
Into PetList = Group
LinqPad向我展示了结果:
在我看来,Linq正在产生大量裁员(但我可能在这里错了!)。第一个结果对象将三次保持person对象。这里出现了两个问题作为Linq nooby(但也许我读的输出不正确):
Select pers.FirstName , pers.LastName, PetName = If(pet is Nothing, String.Empty, pet.Name)
如果我们在PetList中有关于Person对象的所有信息,为什么不只是查询这个对象?在我看来,我们不再需要pers Object了。
答案 0 :(得分:4)
是的,那些Person对象是引用。 LINQ没有克隆Person对象。
输出的原因是LINQPad试图告诉你那个人是谁。如果不重复其属性和字段的行走,就很难分辨它指的是什么。