Linq для выбора первой группы

1

Я хочу выбрать первую группу в списке. Есть лучший способ сделать это.

Вот как я это делаю:

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
  • 0
    Что вы имеете в виду, говоря группу?
Теги:
linq

3 ответа

1
Лучший ответ

Нет необходимости в 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();
0

Если предположить,

group1 = "025"

а также

group2 = "030"

Я думаю, что вам не хватает "группы",

С# LINQ Query - Group By

0

Я предлагаю вам использовать 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 отложено

Ещё вопросы

Сообщество Overcoder
Наверх
Меню