C# 使用匿名方法填充对象初始值设定项中的属性
假设C# 使用匿名方法填充对象初始值设定项中的属性,c#,lambda,C#,Lambda,假设sr是一个IEnumerable,我想使用这样的代码来使用sr.Lines()中的两个项进行内联计算。问题是lambda的类型是“lambda expression”,而不是小数,这是共享所期望的。有没有办法在对象初始值设定项中执行这种类型的内联方法 var trades = from line in sr.Lines() let items = line.Split('|') select new Trade { Total = () => {
sr
是一个IEnumerable
,我想使用这样的代码来使用sr.Lines()
中的两个项进行内联计算。问题是lambda的类型是“lambda expression”,而不是小数,这是共享所期望的。有没有办法在对象初始值设定项中执行这种类型的内联方法
var trades =
from line in sr.Lines()
let items = line.Split('|')
select new Trade
{
Total = () => {
return Convert.ToDecimal(items[1]) + Convert.ToDecimal(items[2]);
},
Name = items[3]
}
您需要的是十进制表达式,而不是函数:
var trades =
from line in sr.Lines()
let items = line.Split('|')
select new Trade
{
Total = Convert.ToDecimal(items[1]) + Convert.ToDecimal(items[2]),
Name = items[3]
};
您需要的是十进制表达式,而不是函数:
var trades =
from line in sr.Lines()
let items = line.Split('|')
select new Trade
{
Total = Convert.ToDecimal(items[1]) + Convert.ToDecimal(items[2]),
Name = items[3]
};
以防万一有人会像我一样来这里寻找解决方案 检查
var交易=
来自sr.Lines()中的行
让items=line.Split(“|”)
选择新行业
{
总计=((函数)(()=>
{
返回Convert.ToDecimal(项目[1])+Convert.ToDecimal(项目[2]);
}))(),
名称=项目[3]
};
以防万一有人像我一样来这里寻找解决方案
检查
var交易=
来自sr.Lines()中的行
让items=line.Split(“|”)
选择新行业
{
总计=((函数)(()=>
{
返回Convert.ToDecimal(项目[1])+Convert.ToDecimal(项目[2]);
}))(),
名称=项目[3]
};
我应该说得更具体一些,我只是把它作为我想做的一个小的、可读的例子。事实上,我可能有相对复杂的逻辑来计算带有if或case语句的每个字段,等等。然后只需将复杂逻辑包装在单独的方法中,并在初始化时调用它们。或者如果它太长,根本就不要使用对象初始化语法。所以你的答案是,不,没有办法做到这一点?我必须使用对象初始值设定项语法,因为它是linq查询的一部分。我知道我可以把它包装成一个函数,但我试图弄清楚是否有某种内联匿名方法可以做到这一点。我应该更具体一些,我只是把它作为我想做的一个小的、可读的例子。事实上,我可能有相对复杂的逻辑来计算带有if或case语句的每个字段,等等。然后只需将复杂逻辑包装在单独的方法中,并在初始化时调用它们。或者如果它太长,根本就不要使用对象初始化语法。所以你的答案是,不,没有办法做到这一点?我必须使用对象初始值设定项语法,因为它是linq查询的一部分。我知道我可以把它包装成一个函数,但我试图弄清楚是否有某种内联匿名方法可以做到这一点。