基本上我想要的是在C#中回答的相同内容: Self-references in object literal declarations
我的代码是:
private List<myObject> myFunction()
{
return myList.Select(l => new myObject
{
propA = 6,
propB = 3,
propC = propA + propB
}
).ToList();
}
当然它不起作用,因为我不能用这种方式引用propA和propB。它是正确的方法吗?
谢谢
答案 0 :(得分:4)
您可以在lambda表达式中使用body:
private List<myObject> myFunction()
{
return myList.Select(l =>
{
var myObject = new myObject
{
propA = 6,
propB = 3
};
myObject.propC = myObject.propA + myObject.propB;
return myObject;
}).ToList();
}
或者你可以在propC
的吸气剂中返回总和:
public int propC
{
get
{
return propA + propB;
}
}
您无需设置propC
。
答案 1 :(得分:3)
如果你没有使用Linq来处理对象,(例如lambda需要是表达式,而不是像Linq到SQL / Entity Framework那样的方法委托),你可以借助匿名对象和两个选择来做到这一点。语句:
return myList
.Select(l => new {
propA = 6,
propB = 3})
.Select(x => new myObject{
propA = x.propA,
propB = x.propB,
propC = x.propA + x.propB
})
.ToList();