У меня есть список объектов в этой структуре ниже. Как создать отдельный список List<int>
всех AwayTeamId
и HomeTeamId
с помощью linq в одном вызове? Я знаю, что могу сделать выбор многих на HomeTeamId и получить все из них, но мне также нужен AwayTeamId.
class Game {
int AwayTeamId;
int HomeTeamId;
}
Ответ Уриила может быть еще короче:
var result = games
.SelectMany(game => new[] { game.AwayTeamId, game.HomeTeamId })
.Distinct()
;
Нет необходимости в дополнительных. Выберите и создайте списки для каждой игры.
Distinct
?
Это будет работать:
var result = entityContext.ListOfGames
.Select(p=>new List<int>{p.AwayTeamId, p.HomeTeamId})
.SelectMany(p=>p).Distinct();
Если LINQ to ENTITY вам нужно будет вызвать .ToList()
после ListOfGames, чтобы это решение работало
Предполагая, что вы только после плоского списка всех идентификаторов команды (дома или в гостях), то как насчет объединения двух SELECT?
var teamIds = games.Select(g => g.HomeTeamId).Union(games.Select(g => g.AwayTeamId));
[ games
являющиеся списком объектов Game
в моем примере выше]
Game
вас было бы 10 записей в вашем новом списке (при условии, что они все отличались)?