我有以下简单的连接语句:
Dim result = (From PropertyDefinition In econtext.PropertyDefinitions
Join ProductDef In econtext.ProductPropertyValues
On PropertyDefinition.PropertyDefID Equals ProductDef.ProductPropDefID
Where ProductDef.ProductID = 1
Select ProductDef,
PropertyDefinition.PropertyDefName,
PropertyDefinition.PropertyDefName2,
PropertyDefinition.PropertyDefIIsDeleted).list()
如果我明确包含 ProductDef 下的所有列,它可以使用,结果出现在一个列表中,目前 ProductDef 的结果将出现在一个单独的列表中:
我需要 ProductDef 和 PropertyDefinition 中的所有内容,但不需要嵌套列表中的内容,
如何在一次性列表中获得结果,而无需明确包含 ProductDef 的所有列?
答案 0 :(得分:1)
我认为你不能。
您将ProductDef
作为嵌套对象获取,因为当您将ProductDef
指定为要返回的值之一时,这正是您所要求的: ProductDef
对象本身,而不是它的任何属性。
您想要的似乎等同于SQL Server的table1.*
语法,用于请求返回给定表的所有列,并且还可能返回其他值。但我不认为LINQ中存在这种情况。
您可以使用可以执行此操作的动态数据类型来处理某些事情,但老实说,只需列出您想要的所有属性就更简单了。
ETA:或者,您可以创建另一个具有所需属性的类型,并创建一个带有ProductDef
和PropertyDefinition
的构造函数,并填充构造函数参数中的所有字段。这将为您提供一个具有您想要的所有属性的对象。但它肯定会有更多的工作。