LINQ Order By选择最低索引

时间:2010-09-30 19:07:14

标签: linq sql-order-by

我对LINQ比较陌生,不知道怎么做Order By。我有一个IEnumerable的myObject列表,想要做select first myObject from myObjectList order by myObject.id asc这样的事情我怎样才能做到这一点?感谢

7 个答案:

答案 0 :(得分:7)

升序是按方向的默认顺序。

var query = from myObject in myObjectList
            orderby myObject.id
            select myObject;

Object o = query.FirstOrDefault();

如果您想要降序,则需要使用orderby myObject.id descending

答案 1 :(得分:3)

var obj = myObjects.OrderBy(o => o.id).First();

答案 2 :(得分:2)

使用First方法。

例如:

var data = (from o in Orders
           order by o.OrderID
           select o.Name).First();

答案 3 :(得分:1)

如果你想要ID最低的项目,你不需要一个OrderBy ...只需枚举一次列表要快得多,因为这个操作有O(n)复杂度,而典型的排序有{{} {1}}复杂性。您可以使用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;
    }

答案 4 :(得分:0)

如果您希望反向使用OrderByDescending()

,则升序是默认值
var obj = myObjectList.OrderBy(x => x.id).First();

如果你需要对象的ID或其他属性,你可以保持同一行

int myID = myObjectList.OrderBy(x => x.id).First().id;

答案 5 :(得分:0)

您的查询应如下所示:

var yourquery = (from myObject in myObjectList
                 orderby myObject.id
                 select myObject).First();

现在变量yourquery包含你需要的对象。

答案 6 :(得分:0)

我更喜欢使用FirstOrDefault()代替First(),如果你的查询没有返回任何元素,那么First()将抛出异常。

var myObj = (from myObject in myObjectList orderby myObject.id select myObject).FirstOrDefault();