Действительно, нет. существует около полумиллиона различных синтаксисов регулярных выражений; они, похоже, доходят до Perl, EMACS / GNU и AT & amp; T в целом, но я всегда удивляюсь.
Примерно так
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",