我对LINQ比较陌生,不知道如何做一个Order By。我有一个IEObject的IEnumerable列表,并且想要做类似select first myObject from myObjectList order by myObject.id asc
的事情我该怎么做到这一点?谢谢LINQ排序依据选择最低索引
3
A
回答
4
升序是按方向默认的顺序。
var query = from myObject in myObjectList
orderby myObject.id
select myObject;
Object o = query.FirstOrDefault();
如果你想降序,你会想要使用orderby myObject.id descending
。
2
var obj = myObjects.OrderBy(o => o.id).First();
0
升序是默认的,如果你想反向只是用OrderByDescending()
var obj = myObjectList.OrderBy(x => x.id).First();
,如果你需要的ID或对象的某些其他属性,你可以保持相同的线
int myID = myObjectList.OrderBy(x => x.id).First().id;
2
0
您的查询应该看起来像以下:
var yourquery = (from myObject in myObjectList
orderby myObject.id
select myObject).First();
现在变量yourquery包含您所需要的对象。
1
如果您想要ID最低的项目,则不需要OrderBy ...只需枚举一次列表要快得多,因为此操作的复杂性为O(n)
,而典型的排序具有O(n log n)
的复杂性。你可以用foreach
循环做,或者使用扩展方法像这样的:
public static T WithMin<T, TValue>(this IEnumerable<T> source, Func<T, TValue> selector)
{
var min = default(TValue);
var withMin = default(T);
bool first = true;
foreach (var item in source)
{
var value = selector(item);
int compare = Comparer<TValue>.Default.Compare(value, min);
if (compare < 0 || first)
{
min = value;
withMin = item;
}
first = false;
}
return withMin;
}
使用它这样的:
var objectWithMinId = myObjectList.WithMin(o => o.Id);
0
我宁愿在地方首先使用FirstOrDefault()() ,如果你的查询没有返回任何元素,那么First()将抛出一个异常。
var myObj = (from myObject in myObjectList orderby myObject.id select myObject).FirstOrDefault();
相关问题
- 1. 选择排序 - 最小/最大索引
- 2. LINQ到SQL排序依据,选择空条目
- 3. C#排序依据INT LINQ
- 4. 排序依据和LINQ
- 5. LINQ查询排序依据
- 6. Linq排序依据为
- 7. LINQ排序依据排序问题
- 8. 仅选择Linq的最低值
- 9. Mysqli查询 - 分组依据并选择最低
- 10. 从xml中选择最低值而不排序
- 11. LINQ排序依据是不工作
- 12. LINQ的排序依据和独特的
- 13. LINQ加入为排序依据只有
- 14. 排序依据儿童在LINQ查询
- 15. linq排序依据列表(Of myObjects)
- 16. 使用LINQ排序依据在iOS
- 17. LINQ查询 - 奇结果 - 排序依据
- 18. LINQ排序依据一些条件
- 19. 的GroupBy和排序依据的LINQ
- 20. 计数,排序依据和组LINQ
- 21. Linq查询与排序依据字数
- 22. C#/ LINQ:如何调用排序依据
- 23. LINQ的使用选择和索引
- 24. LINQ选择和排序关系不同
- 25. LINQ关键字搜索与排序依据基于计数(LINQ到SQL)相关
- 26. 转换LINQ排序依据,以就地列表排序
- 27. 选择最低加入
- 28. SQL - 选择最低价格
- 29. 最低价格选择
- 30. SQL:选择最低值行
请您澄清一下吗?你真的*需要订购的结果,还是只有最低ID的结果?你需要该条目的*索引*还是只需要ID? – 2010-09-30 19:10:49
如果您只需要具有最低ID的结果,则有一个MinBy扩展方法的实现[此处](http://stackoverflow.com/questions/914109/how-to-use-linq-to-select-object -with-最小或最大值特性值)。它是由一些小伙子写的,虽然我从来没有听说过(他的名字叫Jon Skeet,或者类似的东西),所以我不知道我有多信任它。 – 2010-09-30 20:22:09
@Jon ...有些清晰。我需要列表中具有最低ID的对象。 – MikeTWebb 2010-10-01 19:20:40