2016-11-28 3 views
0

У меня есть набор результатов, с которого я вернусь от выполнения хранимой процедуры, с которой я работаю. Вот то, что результирующий набор выглядит, например:Группировка набора результатов с использованием linq в C#

var staff = new Staff[] 
     { 
      new Staff{Code = 5, Name = "Sam", Team = "AB1"}, 
      new Staff{Code = 6, Name = "Dave", Team="RAB"}, 
      new Staff{Code = 6, Name = "Dave", Team="ABC"}, 
     }; 

член Персонал может работать в более чем одной команды в соответствии с набором данных, я имею дело с.

Что я хочу сделать, это сгруппировать их, чтобы показать результаты, как это:

Value ChildValues 
Dave [RAB, ABC] 
Sam [AB1] 

Как я могу добиться этого? Я попытался следующий путь дублировать основной список, но я знаю, что ниже неверно:

var query = staff.GroupJoin(staff, s => s.Code, 
      s => s.Code, (s, result) => new StaffResult(s.Name, result)); 

Я ценю помощь относительно выше.

+0

что-то вроде: https://dotnetfiddle.net/mcsZoU –

ответ

0

Заканчивать заявление GroupBy в Linq:

https://msdn.microsoft.com/en-us/library/bb534304(v=vs.110).aspx

Это будет выглядеть

var groupedStaff = staff.GroupBy(s=>s.Name, s=>S.Team); 

Это получает вас группировку, что вы можете получить доступ через Еогеасп или другой Linq запрос, если необходимо be

1

Для этого вам необходимо использовать способ GroupBy.

var grouped = staff.GroupBy(x=>x.Name, x=>x.Team); 

Это заявление группирует данные по имени, и каждая сгруппированная команда будет содержать команды.

Дополнительную информацию можно найти здесь https://msdn.microsoft.com/en-us/library/bb545971.aspx?f=255&MSPPError=-2147217396.

Надеюсь, это поможет.

+0

Конечно, обновленный ответ – tym32167

1

Попробуйте следующий запрос:

var staff = new Staff[] 
     { 
      new Staff{Code = 5, Name = "Sam", Team = "AB1"}, 
      new Staff{Code = 6, Name = "Dave", Team="RAB"}, 
      new Staff{Code = 6, Name = "Dave", Team="ABC"}, 
     }; 

     var grouped = staff.GroupBy(m => m.Name) 
      .Select(p => new { Value = p.Key, ChildVlues = p.Select(m => m.Team) }) 
      .ToList(); 

Здесь я сгруппированных по Name. Чем я создал новый анонимный тип и добавил Key группы (представляет имя) на Value. Также я добавил p.Select(m => m.Team) в ChildValues, потому что вам нужна коллекция имен.