настоящее время у меня этот Linq запрос:Как Linq-ify этот запрос?
return this.Context.StockTakeFacts
.OrderByDescending(stf => stf.StockTakeId)
.Where(stf => stf.FactKindId == ((int)kind))
.Take(topCount)
.ToList<IStockTakeFact>();
Цель состоит в том, чтобы вернуться каждый факт для TopCount из StockTakes, но вместо этого я могу видеть, что я буду получать только TopCount количество фактов.
Как сделать Linq-ify этот запрос для достижения моей цели?
Я мог бы использовать 2 запроса, чтобы получить top-topCount StockTakeId, а затем сделать «между», но я подумал, какие уловки Linq могут иметь.
Это то, что я пытаюсь победить. Обратите внимание, что это действительно больше связано с тем, что вы не можете найти решение. Также беспокоился о производительности не для этих запросов, но в целом, я не хочу просто легко разбираться и узнавать, что он замирает за кулисами. Как то, каково наказание, которое содержит предложение в моем втором запросе ниже?
List<long> stids = this.Context.StockTakes
.OrderByDescending(st => st.StockTakeId)
.Take(topCount)
.Select(st => st.StockTakeId)
.ToList<long>();
return this.Context.StockTakeFacts
.Where(stf => (stf.FactKindId == ((int)kind)) && (stids.Contains(stf.StockTakeId)))
.ToList<IStockTakeFact>();
Что вы подразумеваете под Linqify? Это уже linq – manojlds
@manojlds. Я предполагаю, что «Linqify» _ делает работу linq, хотя я не проверял словарь ... =) – gdoron
, почему вы не выбрали факт и не примените Take (topCount) к StockTake. Вам нужно будет присоединиться к таблицам в поле «Идентификатор». – Doomsknight