在 LINQ 中使用 GroupBy 创建一个 FSharpMap(FSharpMap)

本文关键字:FSharpMap 一个 创建 LINQ GroupBy | 更新日期: 2023-09-27 18:36:06

我想做一些与这个问题非常相似的事情,但是我不能把结果放进字典里,我需要把它放到FSharpMap s里。数据将来自数据库,如下所示:

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。我怎样才能做到这一点?

在 LINQ 中使用 GroupBy 创建一个 FSharpMap(FSharpMap)

这是我最终实现它的方式。我希望得到改进建议

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
                             )
                         )
                    )
                )
            )
    )
)
相关文章: