LINQ group by and order by in C#

本文关键字:by in order and group LINQ | 更新日期: 2023-09-27 18:13:11

我需要将我的城市列表转换为按州分组和按城市排序。

我试了低于1,但不能得到它的权利。如果你能帮助我,我将不胜感激。

cities.GroupBy(g => g.state).Select(o => o.OrderBy(c => c.cityname));

LINQ group by and order by in C#

试试下面的代码

cities.GroupBy(g => g.state)
.Select(o =>new { 
          State = o.Key,
         Cities = o.OrderBy(c => c.cityname).Tolist()})
.Tolist();
cits.OrderBy(d => d.cityname).GroupBy(d => d.state).SelectMany(g => g).ToList();

1 -按cityname优先排序

2 -然后按state分组。因为你先排序,所以组仍然是根据cityname属性排序的。

3 -转换为单个列表。否则,您将以组列表结束。

应该工作。我还建议使用驼峰大小写来命名变量。

ToLookup函数可以满足您的需要。

cities.ToLookup(c => c.state, c => c.city);

这将创建一个IGrouping<string, string>,您可以在其中迭代Key值(状态)并操作一组城市值。

要先排序,只需执行cities.OrderBy(c => c.state).ThenBy(c => c.city)

先排序:

cities.OrderBy(c=>c.cityname).GroupBy (c => c.state);

你可以命令各州这样做。

cities.OrderBy(c=>c.cityname).GroupBy (c => c.state).OrderBy (g => g.Key);