Как определить локальную переменную в выбранном LINQ-запросе - PullRequest
0 голосов
/ 02 октября 2019

Я пытаюсь написать этот код:

returnModel.BunkerStat=tmpBunk.Select(b =>
                 new BunkerStatisticsRowModel
                 {
                   numberOfBunk=b.NumberOfBunk,
                   procentOfBunk=numberOfBunk/100
                   }).ToList();

Но я получаю ошибку компиляции, потому что я не могу повторно использовать numberOfBunk для вычисления procentOfBunk. Кто-нибудь знает, как я могу повторно использовать numberOfBunk? Я не хочу повторять b.NumberOfBunk. Благодарю.

РЕШЕНО:

Я попробовал вот так, и это сработало:

returnModel.BunkerStat=tmpBunk.Select(b =>
                     new BunkerStatisticsRowModel
                     {
                       numberOfBunk=b.NumberOfBunk,
                       procentOfBunk=numberOfBunk/100
                       }).Select((p)=>
            new BunkerStatisticsRowModel()
            {
               numberOfBunk=p.numberOfBunk,
               procentOfBunk=p.numberOfBunk/100

             }).ToList();

Ответы [ 3 ]

2 голосов
/ 02 октября 2019

Если вы можете добавить свойства в вашу модель BunkerStatisticsRowModel.

   public class BunkerStatisticsRowModel
    {
        public int procentOfBunk { get { return numberOfBunk / 100;  } }
        public int numberOfBunk { get; set; }
    }

Затем используйте свой оператор linq следующим образом.

returnModel.BunkerStat=tmpBunk.Select(b =>
                 new BunkerStatisticsRowModel
                 {
                   numberOfBunk=b.NumberOfBunk
                   }).ToList();

у вас должна быть ваша коллекция, которая содержит numberOfBunk иprocentOfBunk.

2 голосов
/ 02 октября 2019

Используйте лямбду с телом

returnModel.BunkerStat = tmpBunk.Select(b => {
    var procentOfBunk = b.NumberOfBunk / 100;
    return new BunkerStatisticsRowModel
    {
        numberOfBunk = b.NumberOfBunk,
        procentOfBunk = procentOfBunk
    };
})
.ToList();
1 голос
/ 02 октября 2019

Вы можете использовать лямбда-оператор для создания временной переменной.

returnModel.BunkerStat = tmpBunk
                .Select(b =>
                    {
                        var procentOfBunk = b.NumberOfBunk / 100;
                        return new BunkerStatisticsRowModel
                        {
                            numberOfBunk = b.NumberOfBunk,
                            procentOfBunk = procentOfBunk,
                        };
                    })
                .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...