2013-03-22 3 views
-1

Моя таблица имеет следующие столбцы: -Запрос Linq с группой по предложению

LevelId, LevelName, ScenarioId, TeamId.

Я хочу, чтобы выбрать LevelName, соответствующий минимальному LevelId, когда сгруппированы по TeamID

+2

StackOverflow не является кодовым письмом. Пожалуйста, прочитайте [руководство по заданию хорошего вопроса] (http://tinyurl.com/so-hints) и покажите [то, что вы пробовали] (http://whatyouhavetried.com). –

+0

Я пробовал следующий запрос: - – user2044161

+0

@ user2044161: Пожалуйста, обновите свой первоначальный вопрос с помощью того, что вы пробовали. –

ответ

0

Итак, вы хотите:

  • Группа по команде ID
  • Внутри каждой группы, порядок по уровню ID

Так что звучит так:

var query = table.GroupBy(x => x.TeamId) 
       .Select(g => g.OrderBy(x => x.LevelId).First().Name); 

Не просто взять этот запрос и включить его в свой код, хотя - убедитесь, что вы понять это, так что вы можете придумать собственное решение в следующий раз у вас есть что-то подобное сделать.

Если это в LINQ к объектам, вы можете обнаружить, что MoreLINQ бы полезно, с MinBy способом:

var query = table.GroupBy(x => x.TeamId) 
       .Select(g => g.MinBy(x => x.LevelId).Name); 

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

+0

Я попытался: - UnitOfWork.Levels.Entities.Where ( s => s.Scenario_Id == 10.GroupBy (т => t.Team_Id) .Select ( г => g.Min (т = > t.Level_Id)). Distinct(). ToList(); В приведенном выше запросе я хочу найти levelName, соответствующий выбранному уровнюIds – user2044161

+0

@ user2044161: * Очень * трудно прочитать код, написанный в комментариях, и код, который вы используете опубликовано даже не имеет смысла ('10.GroupBy'?) Я ответил на заданный вами вопрос - вы пробовали мое решение, поняв это? –

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