1
假设sr
是IEnumerable<string>
,我想使用这样的代码来使用sr.Lines()
中的两个项目进行内联计算。问题是lambda是类型“lambda表达式”,而不是十进制数,这是股票期望的。是否有任何方法可以在对象初始值设定项中执行此类型的内联方法?使用匿名方法填充对象初始值设定项中的属性
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]
}
我应该更具体一些,我只是用它作为我想要做的一个小的,可读的例子。现实情况是,我可能有相对复杂的逻辑来计算每个字段与if或case语句等 – Dan 2009-10-31 13:28:11
然后只是将复杂的逻辑包装在单独的方法中并在初始化中调用它们。或者如果它太长,请不要使用对象初始化语法。 – 2009-10-31 21:05:48
所以你的回答是,不,没有办法做到这一点?我必须使用对象初始值设定语法,因为它是linq查询的一部分。我知道我可以将它封装在一个函数中,但我试图弄清楚是否有某种内联匿名方法。 – Dan 2009-11-02 18:47:56