Как выбрать Список в списке по ключу через LINQ

62
8

У меня изначально было 2 списка для лейтмотивов и треков. Каждый из них был сгруппирован по дате через ключ. Смотри ниже:

var Keynotes = _keynoteService.GetKeynotesForContentItem(trackPart.ContentItem).GroupBy(k => string.Format("{0}-{1}", k.Timeslot.DayOfYear, k.Timeslot.Year));
var Tracks = GetTracksForContentItem(trackPart.ContentItem);

foreach (var track in Tracks)
{
var trackItem = new TrackItem();
trackItem.Days = new List<TrackDay>();

var trackDays = track.Sessions.GroupBy(s => string.Format("{0}-{1}", s.Timeslot.DayOfYear, s.Timeslot.Year));

foreach(var trackDay in trackDays)
{
var trackKey = trackDay.Key //THIS IS THE KEY I NEED TO MATCH IN Keynotes
var trackKeynotes = Keynotes. //I'm Stuck here

Новые списки теперь Keynotes и trackDays, которые на самом деле являются списками списков по ключам даты.

Как выбрать список в Keynotes, который соответствует определенному ключу из trackDays? У меня уже есть ключ, мне просто нужно знать, как правильно выбрать из Keynotes, чтобы получить правильный список.

Я не специалист по LINQ, поэтому мне нужна помощь.

Я думал о Keynotes.Select или Keynotes.SingleOrDefault

Любая рекомендация будет высоко оценена. Благодарю!

спросил(а) 2013-08-14T19:47:00+04:00 6 лет, 6 месяцев назад
1
Решение
50

var trackKeynotes = Keynotes.SingleOrDefault(g => g.Key == trackKey);

ответил(а) 2013-08-14T19:51:00+04:00 6 лет, 6 месяцев назад
49

Вы должны сделать это так


var result = (from x in Keynotes
join td in TrackDays on x.Key equals td.Key
select x).ToList();

ответил(а) 2013-08-14T19:58:00+04:00 6 лет, 6 месяцев назад
36

Может быть, это

var trackKeynotes = Keynotes.Where(x => x.Key == trackKey);

Я предполагаю, что trackKey является ключом Keynotes.

ответил(а) 2013-08-14T19:54:00+04:00 6 лет, 6 месяцев назад
35

Попробуйте это вместо:

var trackKeynotes = Keynotes.Where(K => K.Key == trackKey);

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

ответил(а) 2013-08-14T19:51:00+04:00 6 лет, 6 месяцев назад
38

Используйте Keynotes[trackKey] для индексирования в свои сгруппированные элементы.

ответил(а) 2013-08-14T19:50:00+04:00 6 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема