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查询的一部分。我知道我可以把它包装成一个函数,但我试图弄清楚是否有某种内联匿名方法可以做到这一点。