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

发布于 2024-08-09 22:16:43 字数 449 浏览 5 评论 0原文

假设 sr 是一个 IEnumerable,我想使用这样的代码使用 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]
       }

Assuming sr is an IEnumerable<string>, I want to use code like this to do an inline calculation using two of the items from sr.Lines(). The problem is that the lambda is of type "lambda expression" and not a Decimal, which shares is expecting. Is there any way to do this type of inline method in an object initializer?

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]
       }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

像极了他 2024-08-16 22:16:43

您需要一个十进制表达式,而不是一个函数:

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]
       };

You want a decimal expression, not a function:

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]
       };
生活了然无味 2024-08-16 22:16:43

以防万一其他人像我一样最终在这里寻找解决方案。

检查如何在 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]
   };

Just in case someone else ends up here looking for a solution like I did.

Check 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]
   };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文