Для меня это больше дразнилка, так как запрос linqTOsql удовлетворяет потребности.Мне просто любопытно, как такой запрос можно преобразовать в лямбду или, если это вообще возможно.
Первоначально я пытался сделать это с помощью лямбды, но единственный способ, которым я мог выяснить, как выполнитьприсоединения, чтобы я мог правильно упорядочить результаты, должен был использовать синтаксис запроса:
var entries = from e2c in entry2CatsTable
join sEntries in streamEntryTable
on e2c.streamEntryID equals sEntries.seID
orderby sEntries.seDateCreated descending
orderby e2c.e2cOrder
where e2c.catID == catID
select sEntries;
Я поиграл с этим, используя лямбды, и вот как далеко я получил:
IQueryable<Entry2Cats> e2c = entry2CatsTable
.Where(x => x.catID == catID)
.OrderBy(x => x.e2cOrder);
IQueryable<StreamEntry> entries = e2c.SelectMany(x => x.StreamEntry);
Эти лямбдывернуть правильные результаты, но я не мог упорядочить их правильно, потому что мне нужно было упорядочить по полям в таблице Entry2Cats
и таблице StreamEntry
.Поскольку это было многим для многих утверждение, подобное этому, не работает:
// doesn't work because it doesn't know which x.Entry2Cats.e2cOrder to use
entries.OrderByDescending(x => x.seDateCreated).OrderBy(x => x.Entry2Cats.e2cOrder);
Есть мысли?
Примечание:
Кроме того, результаты должны быть возвращены какIQueryable
потому что контроллер добавляет функцию разбивки на страницы.