.net 如何在Visual Basic中打印LINQ查询?

.net 如何在Visual Basic中打印LINQ查询?,.net,vb.net,linq,.net,Vb.net,Linq,我想显示InvoiceNumber和InvoiceSum,但我不知道如何循环查询以这样的格式显示它们 Dim query = From row In WorkingDataSet.Tables("myTable").AsEnumerable() Group By InvoiceNumber = row.Field(Of String)("InvoiceNumber") Into InvoiceSum = Sum(row.Field(Of D

我想显示InvoiceNumber和InvoiceSum,但我不知道如何循环查询以这样的格式显示它们

Dim query = From row In WorkingDataSet.Tables("myTable").AsEnumerable()
                            Group By InvoiceNumber = row.Field(Of String)("InvoiceNumber") Into InvoiceSum = Sum(row.Field(Of Decimal)("InvoicePaymentAmount"))
                            Select InvoiceNumber, InvoiceSum

如果查询结果属于相同的、非匿名的
,则通常通过覆盖
ToString()
方法来打印它。否则,您应该逐个循环地检查项目并打印它们

InvoiceNumber: 154145, InvoiceSum, $13434.12

InvoiceNumber: 154145, InvoiceSum, $13434.12

InvoiceNumber: 154145, InvoiceSum, $13434.12

InvoiceNumber: 154145, InvoiceSum, $13434.12

InvoiceNumber: 154145, InvoiceSum, $13434.12

InvoiceNumber: 154145, InvoiceSum, $13434.12

InvoiceNumber: 154145, InvoiceSum, $13434.12

一个重要的概念(这里可能会被误解)是
LINQ
主要用于查询,而不是用于操作或分配。当您想要打印出某个内容(这是一个操作)时,您应该对每个元素的每个使用
,而不是对查询中的每一行使用
LINQ
@Heinzi它说行未声明。如果查询结果属于同一个非匿名类,则通常通过重写
ToString()来打印它
类的方法。否则,您应该逐个循环检查该项并打印它们。@Heinzi我打开了它并编译了它,有没有办法显式键入它?@codemonkeyliketab:是的,如果您用显式类替换
选择InvoiceNumber,InvoiceSum
(例如
选择新的MyClass(InvoiceNumber,InvoiceSum)
)而不是含蓄的。如果使用隐式类,则需要使用隐式类型。但是您需要隐式键入
Dim query=…
,对吗?(我的意思是,您确实有Option Strict On,对吗?如果您没有,您实际上不会使用键入,可以对查询中的每行对象说
。但请不要这样做。)我更喜欢使用格式字符串,而不是将它们与
+
;)连接起来。)@亚历克斯。啊,是的,
Console.WriteLine(“InvoiceNumber:{0},InvoiceSum,${1}:{1:F2}”,q.InvoiceNumber,q.InvoiceSum)
当然是使用
Console.WriteLine()时的另一个选项。
:)
For Each q In query
    Console.WriteLine("InvoiceNumber: " + q.InvoiceNumber + ", InvoiceSum, $" + q.InvoiceSum.ToString("F2"))
Next