假设sr
是IEnumerable<string>
,我想使用这样的代码使用sr.Lines()
中的两个项目进行内联计算。问题是lambda的类型是“lambda表达式”,而不是Decimal,它正是期望的。有没有办法在对象初始化器中进行这种类型的内联方法?
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]
}
答案 0 :(得分:4)
你想要一个十进制表达式,而不是一个函数:
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]
};
答案 1 :(得分:0)
以防其他人最终在这里寻找像我一样的解决方案。
检查How to call anonymous function in C#?。
var trades =
from line in sr.Lines()
let items = line.Split('|')
select new Trade
{
Total = ((Func<decimal>)(() =>
{
return Convert.ToDecimal(items[1]) + Convert.ToDecimal(items[2]);
}))(),
Name = items[3]
};