我引用How to: Combin Data with Linq by using joins中的示例。我们有两个列表,第一个保留人物对象(名字和姓氏)。第二个列表包含一个宠物对象(名称),该对象包含一个人对象(宠物所有者)。一个人可以拥有> = 0只宠物。
现在发生的事情是我进行了群组加入
Dim result1 = From pers in people
Group Join pet in pets
on pers Equals pet.Owner
Into PetList = Group
LinqPad向我显示了结果:
在我看来,Linq产生了大量冗余(但在这里我可能错了!)。第一个结果对象将容纳人员对象3次。作为Linq nooby,对我来说有两个问题(但也许我读输出的方式不正确):
如果我们在PetList中拥有有关Person对象的所有信息,为什么不只查询该对象呢?我认为我们不再需要pers对象。
最佳答案
是的,那些Person对象是引用。 LINQ不克隆Person对象。
该输出的原因是LINQPad试图向您显示该人是谁。如果不重复其属性和字段,就很难说出它指的是哪个人。