如何跳过和获取对象,直到在LINQ to Entity中有10个不同的对象
本文关键字:中有 Entity to 10个 对象 LINQ 获取 何跳过 取对象 | 更新日期: 2023-09-27 18:26:05
这是有问题的代码:
var distinctCatNames = allCats.Select(c => c.CatName).Distinct();
if (skip.HasValue) distinctCatNames = distinctCatNames .Skip(skip.Value);
if (take.HasValue) distinctCatNames = distinctCatNames .Take(take.Value);
var distinctCatNameList= distinctCatNames .ToList();
如果你想象我有一个100只猫的列表,我想选择10个不同的名字。它将进入一个分页列表,因此必须使用skip和take。
以上内容不起作用,因为必须使用OrderBy进行订购。
如果我把OrderBy放在distinct之后,我就不能执行Skip和Take,因为结果是IOrderedQueryable,而不是IQueryable(编译器错误)。
如果我以前做过,错误显示DbSortClause expressions must have a type that is order comparable.
我需要确保它在后台正确地翻译了我的查询,因为可能有很多cat,所以我想确保它生成的SQL在查询中包含skip/take,而不是获取所有cat,然后在该集合上执行。
有什么想法吗?
您需要订购商品,但只需将存储的变量键入为IQueryable
,而不是IOrderedQueryable
:
var distinctCatNames = allCats.Select(c => c.CatName)
.Distinct()
.OrderBy(name => name)
.AsQueryable();