カスタム オブジェクトのリストを文字列でグループ化し、金額を合計する linq クエリを VB.net で作成しようとしています。私は 101 の Linq の例から作業を進めてきましたが、コレクションを処理しようとすると Type Expected エラーが発生しました。
これが私のLinqクエリです:
Dim summedAndGrouped = From s As GLLine In _ListOfGLLines
Group s By s.SEDOL Into grouped = Group
Select SEDOL, TotalIncome = grouped.Sum(Function(s) s.Income)
ここの Linq 101 サンプルから適応: http://msdn.microsoft.com/en-us/vstudio/bb737904#sumgroup
アドバイスをいただければ幸いです。以下は、これを理解しようとするために使用している私のテストプロジェクトです。
Imports System.Text
Imports Microsoft.VisualStudio.TestTools.UnitTesting
<TestClass()>
Public Class UnitTest1
Private _ListOfGLLines As New List(Of GLLine)
<TestInitialize()>
Public Sub Setup()
SetupGLLinesCollection()
End Sub
<TestMethod()>
Public Sub TestMethod1()
Dim summedAndGrouped = From s As GLLine In _ListOfGLLines
Group s By s.SEDOL Into grouped = Group
Select SEDOL, TotalIncome = grouped.Sum(Function(s) s.Income)
Assert.AreEqual(summedAndGrouped.Count, 3)
End Sub
Public Sub SetupGLLinesCollection()
_ListOfGLLines.Add(New GLLine("Bob1", 20, 10, 4, 6))
_ListOfGLLines.Add(New GLLine("Bob1", 20, 10, 4, 6))
_ListOfGLLines.Add(New GLLine("Bob2", 20, 10, 4, 6))
_ListOfGLLines.Add(New GLLine("Bob2", 20, 10, 4, 6))
_ListOfGLLines.Add(New GLLine("Bob3", 20, 10, 4, 6))
_ListOfGLLines.Add(New GLLine("Bob3", 20, 10, 4, 6))
End Sub
End Class
Public Class GLLine
Public Property SEDOL As String
Public Property Income As Decimal
Public Property PID As Decimal
Public Property Interest As Decimal
Public Property Dividend As Decimal
Public Sub New(SEDOL, Income, PID, Interest, Dividend)
_SEDOL = SEDOL
_Income = Income
_PID = PID
_Interest = Interest
_Dividend = Dividend
End Sub
End Class
編集:このクエリは正常に評価されるようです。summedAndGrouped 変数にカーソルを合わせると、Type Expected エラーが表示されるため、混乱が生じました。これは、コンパイラが評価する前にイテレータの型を推測する必要があるためだと思います。クエリ。これが発生する理由とそれを回避する方法を確認していただければ幸いです。