微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – LINQ to SQL使用不同的行对多个列进行分组

我有以下表格结构.我想选择不同的CustomerId和CustomerName,TotalCost.

这是表结构和列数据类型.

LogId (int)
CustomerId (string)
CustomerName (string)
Cost (int)

Logid / CustomerId / CustomerName / Cost

> 1 2031 John Steward 20
> 2 2035 Mary Joe 10
> 3 2034 Robert Tuck 30
> 4 2031 John Setward 12
> 5 2036 Luke David 15
> 6 2033 Kevin Le 14
> 7 2035 Mary Joe 9
> 8 2036 Luke David 8
> 9 2035 Mary Joe 18
> 10 2037杰西汤姆25
> 11 2032年安东尼詹姆斯27
> 12 2033 Kevin Le 26

Update 1

这是我到目前为止的尝试查询

Dim db As New DemoDataContext()

    Dim query = From log In db.LogRecords _
                 Where log.Cost> 10 _
                 Group log By New With {log.CustomerId,log.CustomerName} Into g() _
                 Select New With {g.CustomerId,g.CustomerName,.Cost = g.Sum(Function(log) log.Cost)}

但它使错误消息Range变量名只能从没有参数的简单或限定名称推断.

Update 2

Dim queryResult = (From log In db.LogRecords _ 
    Group log By log.CustomerId,log.CustomerName Into Cost = Sum(log => log.Cost ) _ 
    Select New With { CustomerId,CustomerName,TotalCost })

For Each q In queryResult

Next

错误:未声明名称’queryResult’.

解决方法

如果我正确理解您的要求,这样的事情应该在C#中起作用:

var query = from row in dataTable
            group row by new { row.CustomerId,row.CustomerName } into g
            select new
            {
                g.Key.CustomerId,g.Key.CustomerName,Cost = g.Sum(row => row.Cost)
            };

[编辑]

我想我最初想的为什么它不起作用是错误的.我们的语法错误了.

Dim query = From log In db.LogRecords                     _
            Group log By log.CustomerId,log.CustomerName _
                Into Cost = Sum(log => log.Cost)          _
            Select CustomerId,Cost

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐