Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 按多列分组,然后投影_F#_F# 3.0 - Fatal编程技术网

F# 按多列分组,然后投影

F# 按多列分组,然后投影,f#,f#-3.0,F#,F# 3.0,在下面的代码中,我试图返回一个新的序列类型,该序列类型根据原始序列中的ProductName、Size和Package属性进行分组,但我得到的是一个未分组的新类型序列。我错过了什么 query{ for row in allDeliveries do let key = AnonymousObject<_,_,_>(row.ProductName,row.Size,row.Packaging) groupValBy row key in

在下面的代码中,我试图返回一个新的序列类型,该序列类型根据原始序列中的ProductName、Size和Package属性进行分组,但我得到的是一个未分组的新类型序列。我错过了什么

query{
        for row in allDeliveries do
        let key = AnonymousObject<_,_,_>(row.ProductName,row.Size,row.Packaging)
        groupValBy row key into g
        select g
    }
    |> Seq.map (fun (del) -> 
    {
        POFD = del;
        ProductName = del.Key.Item1;
        Size = del.Key.Item2;
        Packaging = del.Key.Item3;
        Quantity = del.Count()
    })
查询{
对于所有交付中的行,请执行以下操作:
let key=AnonymousObject(row.ProductName、row.Size、row.Packaging)
groupValBy行键进入g
选择g
}
|>Seq.map(乐趣(del)->
{
POFD=del;
ProductName=del.Key.Item1;
尺寸=del.Key.Item2;
包装=del.Key.Item3;
数量=删除计数()
})
这是我的解决方案:

query{
        for row in allDeliveries do
        groupValBy row (row.ProductName, row.Size, row.Packaging) into g
        select {
            POFD = g;
            ProductName = query{
                for row2 in g do
                select row2.ProductName
                headOrDefault
            }

            Size = query{
                for row2 in g do
                select row2.Size
                headOrDefault
            }
            Packaging = query{
                for row2 in g do
                select row2.Packaging
                headOrDefault
            }
            Quantity = g.Count()
        }
    }

我认为,
匿名对象
不会实现某种等价性检查-为什么不使用像
groupValBy row(row.ProductName、row.Size、row.Packaging)这样的普通F元组
?为什么不使用
select
部分直接获取记录呢?请参阅。。。tuples为你做的;)@卡斯滕克ö;几乎是的,你应该把它作为一个答案贴出来,:-)不,没关系。。。如果你接受你自己的,我希望你能得到一些名声。。。有一些+1;)