Я хочу выбрать первую группу в списке. Есть лучший способ сделать это.
Вот как я это делаю:
var match = (from m in recordList select m).FirstOrDefault();
var matches = recordList.Where(d => d.DateDetails == match.DateDetails);
var lookup = matches.ToLookup(a => a.DateDetails).First();
lookaheadList = lookup.ToList();
Я выбираю первую группу и перетаскиваю ее во второй список, называемый lookaheadlist.
Мой DATA выглядит следующим образом:
DateDetails Track Details
0025 ABCD
0025 EFGH
0030 XXXXX
0030 XXXXX
Нет необходимости в ToLookup
. Группы поиска с помощью разных DateDetails
, но matches
уже фильтруются до одной даты, поэтому есть только одна группа для выбора.
Вы можете пропустить фильтр и просто пойти с:
var match = recordList.ToLookup(a => a.DateDetails).First()
lookaheadList = match.ToList();
Однако это избыточно по нескольким причинам:
Если вы не сохраняете результат ToLookup
и используете его для поиска других групп по дате, не было смысла создавать объект поиска - вы могли бы просто использовать GroupBy.
Если вам нужна только первая группа, нет никакой необходимости в какой-либо группировке (либо ToLookup
либо GroupBy
).
Чтобы напрямую захватить элементы, соответствующие первой дате, используйте:
var firstDate = recordList.First().DateDetails;
var matches = recordList.Where(d => d.DateDetails == firstDate)
lookaheadList = matches.ToList();
Если предположить,
group1 = "025"
а также
group2 = "030"
Я думаю, что вам не хватает "группы",
Я предлагаю вам использовать GroupBy
var match = (from m in recordList select m).FirstOrDefault();
var firstGroup= recordList.Where(d => d.DateDetails == match.DateDetails).GroupBy(x=> x.DateDetails).Select(x => x.First());
а затем использовать переменную firstGroup
для фильтрации этих элементов
прочитайте в этом ответе @Jon Skeet о сравнении результатов ILookup и IGrouping
Имейте в виду, что ToLookup - это операция "сделать это сейчас" (немедленное выполнение), тогда как GroupBy отложено