在C#中使用LINQ(Language Integrated Query)进行数据排序是一种非常灵活和强大的方式。LINQ提供了多种排序方法,允许你对数据集合进行排序。最常用的排序方法是OrderBy
、OrderByDescending
、ThenBy
和ThenByDescending
。
操作符 | 描述 | C#查询表达式语法 |
---|---|---|
OrderBy | 按升序操作排序值 | orderby |
OrderByDescending | 降序排序操作值 | orderby ... descending |
ThenBy | 执行二次排序按升序 | orderby …, … |
ThenByDescending | 执行二次排序以降序 | orderby …, … descending |
一个例子
基础类
C#class Hero
{
public int HeroNo { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Hero(string name, int age, int heroNo)
{
Name = name;
Age = age;
HeroNo = heroNo;
}
}
调用
C#private void btnSearch_Click(object sender, EventArgs e)
{
List<Hero> heroes = new List<Hero>
{
new Hero("张飞",38,100),
new Hero("刘备",40,101),
new Hero("关羽",39,102),
new Hero("曹操",45,103),
new Hero("孙权",31,104)
};
var ret = from hero in heroes
orderby hero.Age descending
select hero;
foreach (var item in ret)
{
lstMain.Items.Add(item.Name + " " + item.Age + " " + item.HeroNo);
}
}
多个排序条件
C#var ret = from hero in heroes
orderby hero.Age, hero.HeroNo descending
select hero;
试一下ThenByDescending
C#private void btnSearch_Click(object sender, EventArgs e)
{
List<Hero> heroes = new List<Hero>
{
new Hero("张飞",38,100),
new Hero("刘备",40,101),
new Hero("关羽",39,102),
new Hero("曹操",45,103),
new Hero("孙权",31,104),
new Hero("黄忠",45,105),
};
var ret = heroes.AsQueryable().OrderBy(x => x.Age).ThenByDescending(x => x.HeroNo);
foreach (var item in ret)
{
lstMain.Items.Add(item.Name + " " + item.Age + " " + item.HeroNo);
}
}
本文作者:rick
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!