2013-10-18 28 views
0

我期待着做一些非常類似於this的問題,但是我不能把結果寫入字典,我需要把它寫入FSharpMap s。這些數據將被從數據庫中來了,是這個樣子:使用LINQ中的GroupBy創建一個FSharpMap(的FSharpMap)

User Name Key   Value 
A   Z   1 
A   Y   2 
A   X   3 

B   Z   1 
B   Y   2 
B   X   3 

C   Z   1 
C   Y   2 
C   X   3 

最終的結果應該是FSharpMap<string, FSharpMap<string, string>>類型,其中用戶名是關鍵外FSharpMap和關鍵的關鍵是內部FSharpMap 。我知道使用GroupBy必須減少用戶名類別,但我不確定如何將組的結果轉化爲FSharpMap。我怎樣才能做到這一點?

+1

僅供參考,您需要在您的問題中轉義某些字符:'FSharpMap >'正在被吃掉。可以用反引號包裹它,或者使用'<'和'>' – MikeTheLiar

+0

固定。謝謝。 – GBleaney

回答

0

這是我最終實現它的方式。我很樂意提供改進建議

MyDatabaseService.AspnetDB.SynchronousReturn(
    context => new FSharpMap<string, FSharpMap<string, string>>(
     context.aspnet_UsersValues 
      .GroupBy(databaseValue => databaseValue.UserName) 
      .Select(group => 
       new Tuple<string, FSharpMap<string, string>>(
        group.Key, 
        new FSharpMap<string, string>(
         group.Select(keyValuePair => 
          new Tuple<string, string>(
           keyValuePair.Key, 
           keyValuePair.Value 
          ) 
         ) 
        ) 
       ) 
      ) 
    ) 
) 
MyDatabaseService.AspnetDB.SynchronousReturn(
    context => new FSharpMap<string, FSharpMap<string, string>>(
     context.aspnet_UsersValues 
      .GroupBy(databaseValue => databaseValue.UserName) 
      .Select(group => 
       new Tuple<string, FSharpMap<string, string>>(
        group.Key, 
        new FSharpMap<string, string>(
         group.Select(keyValuePair => 
          new Tuple<string, string>(
           keyValuePair.Key, 
           keyValuePair.Value 
          ) 
         ) 
        ) 
       ) 
      ) 
    ) 
)