我参考了如何使用联接使用Linq组合数据的示例中的内容。我们有两个列表,第一个列表包含人员对象(名字和姓氏)。第二个列表包含宠物对象(名称),并且包含一个人员对象(宠物主人)。一个人可能拥有>=0个宠物。
现在发生的事情是我执行了组连接。
现在发生的事情是我执行了组连接。
Dim result1 = From pers in people
Group Join pet in pets
on pers Equals pet.Owner
Into PetList = Group
LinqPad向我展示了结果:
这看起来像是Linq产生了很多冗余(但我可能在这里错了!)。第一个结果对象将三次保存person对象。作为一个Linq的新手,这里有两个问题(也许我没有正确地阅读输出):
- person对象是引用吗?不幸的是,我找不到任何相关信息。
- 按照上面提到的示例,查询继续进行下去
Select pers.FirstName , pers.LastName,
PetName = If(pet is Nothing, String.Empty, pet.Name)
如果我们在PetList中已经拥有了关于Person Object的所有信息,为什么不直接查询这个对象呢?在我看来,我们不再需要pers Object了。