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));
试试下面的代码
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);