2013-04-18 4 views
1

У меня есть код ниже в C# 4, где я пытаюсь использовать linq для упорядочения, группировки.Как преобразовать данные в объект IEnumerable с помощью LINQ

IList<Component> components = Component.OrganizationalItem.OrganizationalItem.Components(true); 
IEnumerable<Component> baggage = components.Where(x => x.IsBasedOnSchema(Constants.Schemas.BaggageAllowance.ToString())) 
              .OrderBy(x => x.ComponentValue("name").StringValue("Code")) 
              .GroupBy(x => x.ComponentValue("name").StringValue("Code")); 

В приведенном выше примере, когда я пытаюсь использовать GroupBy он дает ошибку, пожалуйста, смотрите ниже:

Ошибка 1 Не удается неявно преобразовать систему типа «System.Collections.Generic.IEnumerable>» на» .Collections.Generic.IEnumerable. Явное преобразование существует (вы пропали без вести броска?)

+1

"он дает ошибку" не * никогда * достаточно подробно. Вы всегда должны указывать ошибку компилятора или исключение и т. Д. –

ответ

2

Результата GroupBy будет IGrouping<string, Component> - это последовательность групп компонентов, а не одну последовательности компонентов. В этом весь смысл группировки. Таким образом, это должно быть прекрасно:

IEnumerable<IGrouping<string, Component>> baggage = ... query as before ...; 

Или просто использовать неявную типизацию:

var baggage = ...; 

Вы можете итерации по группам:

foreach (var group in baggage) 
{ 
    Console.WriteLine("Key: {0}", group.Key); 
    foreach (var component in group) 
    { 
     ... 
    } 
} 
+0

после использования IGrouping дает ниже ошибку Ошибка Невозможно неявно преобразовать тип 'System.Collections.Generic.IEnumerable > 'to' System.Linq.Grouping '. Явное преобразование существует (вы пропускаете листинг?) Вместо этого, если вы используете «var», он работает отлично, что нам нужно, если вы хотите использовать IGrouping

+0

Измените объявление 'baggage' на' IEnumerable > bagage' или вместо этого используйте 'var':' var baggage = (...) ' – MarcinJuraszek

+0

@MarcinJuraszek: Упс, исправлено спасибо :) –

Смежные вопросы