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

vb.net中的linq sum

  •  1
  • Iulian  · 技术社区  · 15 年前

    我需要创建一个类似以下SQL的查询:

    SELECT  CodProiect, SUM(Valoare)
    FROM DET
    WHERE CodProiect = 'cod_pr'
    GROUP BY CodProiect;
    

    我怎么能用linq写同样的东西呢?

    我尝试过:

    dim gac1 = (From ac1 In t_detalii _
                Where ac1!CodProiect = cod_pr1 _
                Select ac1!Valoare).Sum(Function(ac1) ac1!Valoare)
    

    但它给了我一个错误“没有为类型“double”找到默认成员”。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Femaref    15 年前

    您需要选择AC1而不是AC1!Valoare(它是属性本身,而不是相应的对象)

    dim gac1 = (From ac1 In t_detalii _
                           Where ac1!CodProiect = cod_pr1 _
                           Select ac1).Sum(Function(ac1) ac1!Valoare)
    

    编辑

    当然,您可以在查询中对其进行分组:

    dim gac1 = (From ac1 In t_detalii _
                           Where ac1!CodProiect = cod_pr1 _
                           Group By ac1.CodProiect Into ac2
                           Select ac2.Sum(Function(ac2) ac2!Valoare)
    

    (在这个方向上,我不熟悉vb.net语法,也不使用编译器支持atm编写它。