У меня есть следующая таблица:
И я хочу получить этот вывод:
Я пытался несколько раз, пока не разработал следующий запрос linq, но не смог его настроить. чтобы дать требуемый результат:
var output= _model.GroupBy(x => new { x.Country })
.Select(y =>
{
var distinctTeam = y.Where(z => (z.Player != null)).Select(z => z.Team);
return new
{
Country = y.Key.Country,
Team&Player= string.Join(" - ", distinctTeam.Select(z => $"{z}
({y.Where(c => c.Team == z && ((c.Team !=
null))).SelectMany(x=> string.Join(" ,
",xPlayer)))})").Distinct())
};
}).ToList();
Ваша поддержка очень ценна.
Во-первых, Team&Player
не является допустимым именем свойства. Этот амперсанд вызовет ошибку. Во-вторых, вам понадобится вложенный GroupBy()
для команд, например:
var output = _model
.GroupBy(g => g.Country)
.Select(c => new {
Country = c.Key,
TeamAndPlayer = string.Join(" - ", c
.GroupBy(c => c.Team)
.Select(t => $"{t.Key}({string.Join(",", t.Select(p => p.Player))})")
)
});
Идеально, работало как шарм. Спасибо