2017-04-23 66 views
-2

我生成使用此代碼列表:分割清單,較小的列表C#

 var Data2 = Data.GroupBy(i => new { i.City, i.County, i.Type }) 
            .Select(group => new { Name = group.Key, Number = group.Count() }) 
            .OrderBy(x => x.Name).ThenByDescending(x => x.Number).ToList(); 

這份名單大約有5100條記錄。我想生成獨特的城市和縣名單。一些列表或數組可以爲我工作。你能給我一些想法嗎?謝謝。

編輯:

例如該查詢返回這樣一個列表:

{ Name = {{ City = New York City, County = Bronx, Type = Type A }}, Count = 4 } 

    { Name = {{ City = New York City, County = Bronx, Type = Type B }}, Count = 8 } 

    { Name = {{ City = New York City, County = Bronx, Type = Type C }}, Count = 24 } 

    { Name = {{ City = New York City, County = Manhattan, Type = Type B }}, Count = 43 } 

    { Name = {{ City = New York City, County = Manhattan, Type = Type C }}, Count = 58 } 

    { Name = {{ City = Seattle, County = King County, Type = Type D }}, Count = 43 } 

    { Name = {{ City = Seattle, County = King County, Type = Type A }}, Count = 67 } 

    { Name = {{ City = Seattle, County = Snohomish County, Type = Type C }}, Count = 67 } 

我想使這個名單幾個列表如下:

表1:

{ Name = {{ City = New York City, County = Bronx, Type = Type A }}, Count = 4 } 

    { Name = {{ City = New York City, County = Bronx, Type = Type B }}, Count = 8 } 

    { Name = {{ City = New York City, County = Bronx, Type = Type C }}, Count = 24 } 

列表2:

{ Name = {{ City = New York City, County = Manhattan, Type = Type B }}, Count = 43 } 

    { Name = {{ City = New York City, County = Manhattan, Type = Type C }}, Count = 58 } 

表3:

{ Name = {{ City = Seattle, County = King County, Type = Type D }}, Count = 43 } 

    { Name = {{ City = Seattle, County = King County, Type = Type A }}, Count = 67 } 

表4:

{ Name = {{ City = Seattle, County = Snohomish County, Type = Type C }}, Count = 67 } 
+0

爲什麼你按' Type'?如果你想要這些字段的「城市」和「縣」組的唯一列表 –

+0

@OfirWinegarten我按類型分組以獲得該城市,縣和類型的計數。我有不同的城市和縣名單,但我也需要計算類型參數。 – jason

+0

目前尚不清楚。添加一些數據和預期結果 –

回答

1

應該這樣做:
它的一組中的一組

var Data2 = 
    Data.GroupBy(i => new {i.City, i.County, i.Type}) 
     .Select(group => new {Name = group.Key, Count = group.Count()}) 
     .OrderBy(x => x.Name) 
     .ThenByDescending(x => x.Count) 
     .GroupBy(g => new {g.Name.City, g.Name.County}) 
     .Select(g => g.Select(g2 => 
      new {Name = new {g.Key.City, g.Key.County, g2.Name.Type}, g2.Count})); 
+0

感謝您的回答,但是當我將'ToList()'應用於此查詢時。給'Data2'花費太長時間。 – jason

+0

如果您在最初的查詢中添加了'ThenByDescending'後的'.ToList()',怎麼辦? –

+0

然後它給0結果。 – jason