Запрос:получение записей из списка на основе категории
List<vwBookTitleKitsSummary> theseKits = (from k in _dataContext.vwBookTitleKitsSummaries
where k.DateKitEnds > DateTime.Now && k.DateKitStarts <= DateTime.Now && k.IsDeleted == false
orderby k.KitOrder, k.KitCode descending
select k).ToList();
thesekits получил 6 результатов, как показано ниже (выделенные из них):
Я хочу, чтобы запрос, который возвращает один элемент из каждая категория например, я хочу, чтобы записи K1503, T1503 т.е.
Я хочу, чтобы первая запись, которые начинаются с K и первой записи, которые начинаются с T
Я пытался, как следующий:
List<vwBookTitleKitsSummary> theseKits = (from k in _dataContext.vwBookTitleKitsSummaries
where k.DateKitEnds > DateTime.Now && k.DateKitStarts <= DateTime.Now && k.IsDeleted == false && (k.KitCode.StartsWith("K"))
orderby k.KitOrder, k.KitCode descending
select k).Take(1).ToList();
List<vwBookTitleKitsSummary> qry = (from k in _dataContext.vwBookTitleKitsSummaries
where k.DateKitEnds > DateTime.Now && k.DateKitStarts <= DateTime.Now && k.IsDeleted == false && (k.KitCode.StartsWith("T"))
orderby k.KitOrder, k.KitCode descending
select k).Take(1).ToList();
theseKits.AddRange(qry);
Это будет возвращать записи с KitCode - K1503, T1503
Вместо того, чтобы писать два запроса и использовать AddRange, это может быть сделано в одном запросе, любая помощь пожалуйста.
Попробуйте добавить условие ИЛИ в свой первый запрос. –
добавление (k.KitCode.StartsWith («K») || k.KitCode.StartsWith («T») с результатами Take (2) с K1503, K1502. Мне нужен один от каждого KitCode. – user1282609