如何使用linq或lambda命令降序IEnumerable<T>
?
答案 0 :(得分:10)
Enumerable.OrderByDescending
如果问题是你想要降序而不是提升
答案 1 :(得分:5)
如果您指的是非通用IEnumerable
,则应首先使用Cast
或OfType
获取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);