在一个linq查询中,我需要以某种方式将对linq查询期间创建的对象的引用传递给在同一查询中创建的另一个类... I知道这个问题并不清楚,所以看下面的例子。在Linq表达式中相当于VB.Net“me”
public class class1
public class class2
private _class1 as class1
public property OtherProperty1 as int
Public sub new(cls1 as class1)
_class1 = cls1
End Sub
End class
public property Property1 as int
public property Property2 as class2
End Class
Dim e as List(of class1) = (From row as datarow in dataTable.Rows
Select New class1 with {
.Property1 = row.Item("Property1"),
.Property2 = new class2(<<<ME>>>) with {
.OtherProperty1 = row.Item("OtherProperty1")
}
}).ToList()
所以,在上面的代码,其中,“< < < ME >>>”位于,我需要传递到新的Class2对象被创建到Class对象的引用。
我知道我可以使用的一种替代方法是在此查询期间创建class1对象,并跳过对class2对象的引用。然后,在后面的所有class1对象上使用foreach循环,并使用新的linq查询来填充缺少的class2对象......它可以工作,但这并不理想。我想立即填充所有内容,而不是一次完成所有内容。
- EDIT-- 理想情况下,我不必更改现有的类,因为它可能在代码的其他部分有不需要的副作用......如果必须进行更改,我会打开做一些我正在创建一个新的构造函数或属性的东西,正如一些答案中的建议。
有什么想法?
我不太了解VB,但我认为你正在使用属性初始值设定项,所以你可以使用一段代码创建实例,然后使用创建的实例设置属性,然后返回实例。 –
由于您的代码是现在,您正在Linq查询中访问的'class1'中缺少属性声明。 –