Конвертировать вложенный foreach в Linq в C #

Действительно, нет. существует около полумиллиона различных синтаксисов регулярных выражений; они, похоже, доходят до Perl, EMACS / GNU и AT & amp; T в целом, но я всегда удивляюсь.

-5
задан Mikael Dúi Bolinder 18 March 2019 в 13:16
поделиться

1 ответ

Примерно так

    dataList
        .GroupBy(x => new { x.Pruefdatum, x.Plakettenjahr })
        .Select(x => new Item()
        {
            Pruefdatum = x.Key.Pruefdatum,
            Plakettenjahr = x.Key.Plakettenjahr,
            HU = x.FirstOrDefault(y => y.Plakart == "HU")?.Anzahl ?? 0,
            SP = x.FirstOrDefault(y => y.Plakart == "SP")?.Anzahl ?? 0,
        });

РЕДАКТИРОВАТЬ: я пропустил поле Plakart, но также не совсем понятно, что определяет его значение из исходного примера (temp никогда не получается Plakart назначен). С этой точки зрения мой приведенный выше листинг дает точно такие же результаты, что и оригинальный листинг кода, хотя это не соответствует списку, который, как утверждается, является результатом.

Кроме того, я использую Key вместо Last(), потому что нет необходимости использовать последний элемент в результате запроса, если вы уже группируете его. Это означает, что не будет никакого различия между первым или последним или любым, на самом деле. Если порядок сортировки важен , вы всегда можете поменять Key обратно на Last().

Теперь, основываясь на результирующем наборе данных, единственное правило, которое я могу от него отложить, определяющее значение Plakart, это если HU> 0, то HU, иначе SP, что привело бы к добавлению этого в мое предложение select:

            Plakart = x.Any(y => y.Plakart == "HU" && y.Anzahl > 0) ? "HU" : "SP",
0
ответ дан Jeroen V 18 March 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: