我有以下表格结构。我想选择不同的 CustomerId
和 CustomerName
,TotalCost
。
这是表结构和列数据类型。
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/