LINQ group by by by C#
我需要将我的城市列表按城市的状态和顺序转换为组。LINQ group by by by C#
我尝试了下面的一个,但没有把它弄清楚。希望对此有所帮助。
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();
先做排序依据:
cities.OrderBy(c=>c.cityname).GroupBy (c => c.state);
你可能要订购的状态如此。
cities.OrderBy(c=>c.cityname).GroupBy (c => c.state).OrderBy (g => g.Key);
谢谢鲍勃的输入 – user2369630 2013-05-11 01:46:40
cits.OrderBy(d => d.cityname).GroupBy(d => d.state).SelectMany(g => g).ToList();
1 - 订购cityname
第一。
2 - 然后根据state
对它们进行分组。由于您先订购,团体仍按照cityname
财产进行订购。
3 - 转换为单个列表。否则,您将以组列表结束。
应该工作。我还建议使用camel case表示法来命名变量。
谢谢你的输入 – user2369630 2013-05-11 01:48:39
ToLookup
函数可能会给你你需要的东西。
cities.ToLookup(c => c.state, c => c.city);
这将创建一个IGrouping<string, string>
在那里你可以通过Key
值(州)迭代和一组城市值的操作。
要对其进行排序,只需执行cities.OrderBy(c => c.state).ThenBy(c => c.city)
即可。
谢谢约翰的输入 – user2369630 2013-05-11 01:47:26
这工作按预期。感谢维杰 – user2369630 2013-05-11 01:46:07