使用Anonymous方法填充对象初始值设定项中的属性

时间:2009-10-29 13:45:44

标签: c# lambda

假设srIEnumerable<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]
       }

2 个答案:

答案 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]
   };
相关问题