Могу ли я сослаться на элементы исходного IEnumerable в запросе LINQ после группировки? - PullRequest
0 голосов
/ 12 мая 2010

Пример:

from OriginalObject in ListOfOriginalObjects

group new CustomObject {
  X = OriginalObject.A, 
  Y = OriginalObject.B
} by OriginalObject.Z into grouping 

select new GroupOfCustomObjects {
  Z = grouping.Key, 
  C = OriginalObject.C, 
  group = grouping
}

В части запроса select я хотел бы добавить свойство (OriginalObject.C) к типу GroupOfCustomObjects. Но кажется, что OriginalObject выходит за рамки этой части запроса. Я могу понять, почему, поскольку я не группирую на это свойство, и я также не делаю это свойство частью CustomObject, который я группирую.

Один из обходных путей - добавить свойство C к CustomObject и в GroupOfCustomObjects прочитать значение первого CustomObject в группировке. Моя проблема с этим заключается в том, что я добавляю свойство к объекту, которому оно не нужно (CustomObject), просто чтобы иметь возможность добавить его к GroupOfCustomObjects.

Надеюсь, я все правильно объяснил!

Есть ли способ сослаться на OriginalObject, с которого начинается запрос?

Спасибо!

1 Ответ

1 голос
/ 14 мая 2010

Предложение в очищает область видимости. На этом этапе OriginalObject удаляется из области видимости.

Попробуйте это так:

from OriginalObject in ListOfOriginalObjects 
group OriginalObject by OriginalObject.Z into grouping  
select new GroupOfCustomObjects { 
  Z = grouping.Key,  
  C = grouping.First().C,  
  group = grouping.Select(x => 
    new CustomObject { 
      X = x.A,  
      Y = x.B 
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...