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

标签 c# vb.net linq-to-sql

我有以下表格结构。我想选择不同的 CustomerIdCustomerNameTotalCost

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

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

Logid / CustomerId / CustomerName / Cost

  • 1 2031 约翰·斯图尔特 20
  • 2 2035 玛丽·乔 10
  • 3 2034 罗伯特·塔克 30
  • 4 2031 约翰·塞特沃德 12
  • 5 2036 卢克大卫 15
  • 6 2033 凯文·勒 14
  • 7 2035 玛丽·乔 9
  • 8 2036 卢克大卫 8
  • 9 2035 玛丽·乔 18
  • 10 2037 杰西·汤姆 25
  • 11 2032 安东尼·詹姆斯 27
  • 12 2033 凯文·勒 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 variable name can be inferred only from a simple or qualified name with no arguments.

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, CustomerName, Cost

关于c# - LINQ to SQL 用不同的行对多列进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437622/

相关文章:

c# - 具有混合对象类型的嵌套 XAML TreeView 结构

c# - WPF MVVM 应用程序中的启动画面

c# - 与使用 GraphicsPath 的 Rectangle.Inflate() 等效的是什么?

vb.net - 已经运行的应用程序现在出现套接字错误 10013

.net - LINQ to MySql 数据提供程序

c# - kernel.Get<type> 处的 InvalidCastException

VB.net 将完整字符串与包含通配符的字符串进行比较

.net - 实现具有最大项目数的 List(Of) 的最佳方法

从 MVC Razor 中的数据库获取数据时的 LINQ 查询性能问题

c# - LINQ to SQL 实体列名称属性被 guid 主键忽略