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

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...