2015-08-04 1 views
0

Скажите, что у меня есть список, List<Foo> SomeList и Foo - это класс, который имеет два свойства, и Baz.Получение всех элементов в списке, который имеет свойство, установленное на то же значение

Есть ли запрос LINQ, который позволит мне выбрать все элементы типа Foo, которые имеют одинаковое значение для Bar, чтобы их можно было обрабатывать вместе?

что-то вроде:

foreach (List<Foo> foos in SomeList.SelectBy (x => x.Bar)) 
{ 
// process foos 
} 

так, чтобы все элементы с FooBar = 0 обрабатываются, а затем те, с Bar установленным в 1, и так далее и тому подобное.

Можно ли это сделать легко, или мне нужно написать эту функциональность самостоятельно?

+0

Я имею в виду как SomeList.orderby (x => x.Bar) –

+0

Итак, вам нужно по существу «Count (x.bar)> 0' и« order by », если я читаю это через голову Исправлены термины SQL? – Adam

+0

'SomeList.GroupBy (x => x.Bar) .OrderBy (x => x.Key)' – EZI

ответ

2

Для этого вам нужно сначала сгруппировать, а затем упорядочить по клавишам элементы в вашем списке.

var grouped = SomeList.GroupBy(item => item.Bar) 
         .OrderBy(gr=>gr.Key); 


foreach (var item in grouped) 
{ 
    // item has a Key property associated with the value of Bar 
    // You can take the list of Foo by simply calling this 
    // item.ToList() and then you can process this. 
} 
0

Ваш вопрос не достаточно ясен, так что я иду на дикую догадку. надеюсь, что вы ищете что-то вроде следующего:

List<Foo> SomeList = new List<Foo>(); 
     SomeList.Add(new Foo() {Bar=1,Baz ="ASDASD"}); 
     SomeList.Add(new Foo() {Bar=2,Baz ="dqwe"}); 
     SomeList.Add(new Foo() { Bar = 5, Baz = "fsdfsgsdg" }); 
     SomeList.Add(new Foo() { Bar = 5, Baz = "dghjhljkl" }); 
     foreach(Foo f in SomeList.Where(x=>x.Bar==5).ToList()) 
     { 
     // do some operations 
     } 

Это позволяет выбрать все элементы типа Foo, которые разделяют один и тот же значение для бара (здесь 5, сделать его динамичным, если это необходимо)

согласно предложениюХристоса в вы можете применить OrderBy если порядок важен.