代码之家  ›  专栏  ›  技术社区  ›  user1206480

按多列分组,然后投影

  •  2
  • user1206480  · 技术社区  · 11 年前

    在下面的代码中,我试图从原始序列中返回一个按ProductName、Size和Packaging财产分组的新序列类型,但我得到了一个未分组的新类型序列。我在这里缺少什么?

    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()
        })
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   user1206480    11 年前

    这是我的解决方案:

    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()
            }
        }