LINQ Order By 选择最低索引
我对 LINQ 比较陌生,不知道如何执行 Order By。我有一个 myObject 的 IEnumerable 列表,并且想要执行类似 select first myObject from myObjectList order by myObject.id asc
我该如何完成此操作?谢谢
I am relatively new to LINQ and don't know how to do an Order By. I have an IEnumerable list of myObject and want to do something like select first myObject from myObjectList order by myObject.id asc
How can I accomplish this? Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
升序是默认的方向顺序。
如果您想要降序,则需要使用
orderby myObject.id 降序
。Ascending is the default order by direction.
If you want descending, you will want to use
orderby myObject.id descending
.使用第一种方法。
例如:
Use the First method.
For example:
如果您想要具有最低 ID 的项目,则不需要 OrderBy...仅枚举一次列表要快得多,因为此操作的复杂度为
O(n)
,而典型的排序的复杂度为 O(n log n)。您可以使用foreach
循环来完成此操作,或者使用像这样的扩展方法:像这样使用它:
If you want the item with the lowest ID, you don't need an OrderBy... It is much faster to just enumerate the list once, since this operation has
O(n)
complexity whereas a typical sort hasO(n log n)
complexity. You can do it with aforeach
loop, or use an extension method like this one:Use it like that:
升序是默认的,如果您想要相反,只需使用OrderByDescending(),
如果您需要对象的ID或其他一些属性,您可以保留同一行
Ascending is the default if you wanted the reverse just use
OrderByDescending()
if you needed the ID or some other property from the object you can keep the same line
您的查询应如下所示:
现在变量 yourquery 包含您需要的对象。
Your query should look like following:
Now the variable yourquery contains the object you require.
我更喜欢使用 FirstOrDefault() 代替 First() ,如果您的查询不返回任何元素,那么 First() 将抛出异常。
I would prefer using FirstOrDefault() in place of First() , in case your query does not return any elements then First() will throw a Exception.