如何使用lambda或linq命令asc / dsc

时间:2010-08-06 08:07:13

标签: c# .net linq lambda

如何使用linq或lambda命令降序IEnumerable<T>

3 个答案:

答案 0 :(得分:10)

Enumerable.OrderByDescending

如果问题是你想要降序而不是提升

答案 1 :(得分:5)

如果您指的是非通用IEnumerable,则应首先使用CastOfType获取IEnumerable<T>,然后使用正常OrderBy } / OrderByDescending来电。

例如:

IEnumerable test = new string[] { "abc", "x", "y", "def" };
IEnumerable<string> orderedByLength = test.Cast<string>()
                                          .OrderBy(x => x.Length);

您也可以通过在查询表达式中明确说明类型来执行此操作:

IEnumerable<string> orderedByLength = from string x in test
                                      orderby x.Length
                                      select x;

编辑:现在问题已经澄清,查询表达式形式为:

var query = from value in collection
            orderby value.SomeProperty descending
            select value;

答案 2 :(得分:4)

如果您谈论的是通用的IEnumerable,下面是一个精简的使用示例。

// Using complex type
class Person()
{
    public string Name;
}

IEnumerable<Person> myEnumerable = new List<Person>();
this.myEnumerable.OrderByDescending(person => person.Name)

// Using value type
IEnumerable<int> ints = new List<int>();
ints.OrderByDescending(x => x);