我需要將我的城市列表按城市的狀態和順序轉換爲組。LINQ group by by by C#
我嘗試了下面的一個,但沒有把它弄清楚。希望對此有所幫助。
cities.GroupBy(g => g.state).Select(o => o.OrderBy(c => c.cityname));
我需要將我的城市列表按城市的狀態和順序轉換爲組。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