如何在 C# 中使用 order by 和 group by?
csharpserver side programmingprogramming更新于 2025/6/29 5:22:17
Order by 用于按升序或降序对数组进行排序
GroupBy 运算符属于分组运算符类别。该运算符接收一个扁平的项目序列,根据特定键将该序列分组(IGrouping
示例
class ElectronicGoods {
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public static List<ElectronicGoods> GetElectronicItems() {
return new List<ElectronicGoods>() {
new ElectronicGoods { Id = 1, Name = "Mobile", Category = "Phone"},
new ElectronicGoods { Id = 2, Name = "LandLine", Category = "Phone"},
new ElectronicGoods { Id = 3, Name = "Television", Category = "TV"},
new ElectronicGoods { Id = 4, Name = "Grinder", Category = "Food"},
new ElectronicGoods { Id = 5, Name = "Mixer", Category = "Food"},
};
}
}
class Program {
static void Main() {
//Group by
var res=ElectronicGoods.GetElectronicItems().GroupBy(x => x.Category).Select(x => new {
Key = x.Key,
electronicGoods = x.OrderBy(c => c.Name)
});
foreach (var group in res) {
Console.WriteLine("{0} - {1}", group.Key, group.electronicGoods.Count());
Console.WriteLine("----------");
foreach (var electronicGoods in group.electronicGoods) {
Console.WriteLine(electronicGoods.Name + "\t" + electronicGoods.Category);
}
Console.WriteLine(); Console.WriteLine();
}
Console.ReadKey();
}
}
输出
Phone - 2 ---------- LandLine Phone Mobile Phone TV - 1 ---------- Television TV Food - 2 ---------- Grinder Food Mixer Food
Order By
class ElectronicGoods {
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public static List<ElectronicGoods> GetElectronicItems() {
return new List<ElectronicGoods>() {
new ElectronicGoods { Id = 1, Name = "Mobile", Category = "Phone"},
new ElectronicGoods { Id = 2, Name = "LandLine", Category = "Phone"},
new ElectronicGoods { Id = 3, Name = "Television", Category = "TV"},
new ElectronicGoods { Id = 4, Name = "Grinder", Category = "Food"},
new ElectronicGoods { Id = 5, Name = "Mixer", Category = "Food"},
};
}
}
class Program {
static void Main() {
//Order by
var res = ElectronicGoods.GetElectronicItems().OrderBy(x => x.Category);
foreach (var items in res) {
Console.WriteLine(items.Name + "\t" + items.Category);
}
Console.ReadKey();
}
}
输出
Grinder Food Mixer Food Mobile Phone LandLine Phone Television TV

