Использование анонимного метода для заполнения свойства в инициализаторе объекта - PullRequest
1 голос
/ 29 октября 2009

Предполагая, что sr является IEnumerable<string>, я хочу использовать подобный код для выполнения встроенного вычисления, используя два элемента из sr.Lines(). Проблема состоит в том, что лямбда имеет тип «лямбда-выражение», а не десятичное число, которое ожидает доля. Есть ли способ сделать этот тип встроенного метода в инициализаторе объекта?

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 ]

4 голосов
/ 29 октября 2009

Вы хотите десятичное выражение, а не функцию:

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]
       };
0 голосов
/ 20 марта 2017

На всякий случай, если кто-то еще придет сюда искать решение, как я.

Проверка Как вызвать анонимную функцию в 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]
   };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...