- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个表:Items 和 ItemMetrics。 Items 包含我的项目,ItemMetrics 包含有关这些项目的统计信息。
我正在尝试按相应的统计权重对项目列表进行排序。我使用子查询让它工作,但我认为它有点低效并且可以优化...
items.OrderBy(item => (from metric in Context.ItemMetrics where item.ItemId == metric.ItemId select metric.Weight).FirstOrDefault());
...所以我正在尝试使用连接来完成同样的事情...
from item in items join metric in ItemMetrics on item.ItemId equals metric.ItemId orderby metric.Weight select item;
这在 LINQPad 中运行良好。我需要为补充方法返回一个 IOrderedQueryable 以使用 Skip 和 Take 进行一些分页,但编译器告诉我这个查询的结果是一个 IQueryable。
我能想到的明确暗示 IOrderedQueryable 的唯一方法是将查询包装在
OrderBy(x => 0)
有没有更好的办法?
最佳答案
问题是 IOrderedQueryable
需要能够应用二级排序 - 当您将项目/指标对投影到一个项目时,您已经失去了主要的顺序订购。
一种方法是将投影推迟到以后:
var ordered = items.Join(ItemMetrics,
item => item.ItemId,
metric => metric.ItemId,
(item, metric) => new { item, metric })
.OrderBy(pair => pair.Metric.Weight);
var paged = ApplyPaging(ordered, pageConfiguration); // Whatever
var query = paged.Select(pair => pair.Item);
假设 ApplyPaging
(或您正在使用的任何内容)返回一个 IQueryable
或一个 IOrderedQueryable
。
关于c# - 将 IQueryable 转换为 IOrderedQueryable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522366/
我有以下抽象类,我的所有存储库都继承自该抽象类: abstract class RepositoryBase { void Add(); void Delete(); void
context.EntitySet.AsEnumerable().OrderBy()返回 IOrderedEnumerable保证会被订购,但看起来排序是在客户端完成的。 context.Entity
应用于 Entity Framework ,扩展方法Select()和 OrderBy()都返回 ObjectQuery ,定义为: public class ObjectQuery : Object
我有 2 个表:Items 和 ItemMetrics。 Items 包含我的项目,ItemMetrics 包含有关这些项目的统计信息。 我正在尝试按相应的统计权重对项目列表进行排序。我使用子查询让它
调用 AsQueryable()在 IOrderedEnumerable 上在 IEnumerable 上调用扩展方法并返回 IQueryable而不是 IOrderedQueryable . 这对我
我有一个 IQueryable。我没有对其调用 OrderBy 或以其他方式对其进行任何操作。 如果我这样做: // for some reason, isItOrdered is always tr
我要返回一个 IOrderedQueryable像这样: response.Data = Expressions .ApplySorts(request, result) .Skip(
我有一个通用方法,我使用 IQueryable并返回 IOrderedQuerable使用 Linq-to-Entities。 一个简单的input.OrderBy(p => p.something)
我有以下 LINQ 代码: var posts = (from p in db.Posts .Include("Site") .Include("PostS
我想创建一个排序通用 Func Creating Func, IOrderedQueryable>在扩展方法中: public static Func, IOrderedQueryable> GetO
我想创建 Func, IOrderedQueryable>来自 SortingItems 的列表动态地。我的意思是我想创建以下表达式: entity => entity.OrderBy(c => c.
我正在使用这里提到的模式 http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-rep
我正在尝试实现 EF 提供的分页功能。我以为我只需要将简单的 Skip() 和 Take() 添加到我的查询中,但后来我收到了这条消息: Error 4 'System.Linq.IOrderedQu
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: LINQ2SQL: Cannot convert IQueryable<> to IOrderedQuery
我是一名优秀的程序员,十分优秀!