1

カスタム オブジェクトのリストを文字列でグループ化し、金額を合計する 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 エラーが表示されるため、混乱が生じました。これは、コンパイラが評価する前にイテレータの型を推測する必要があるためだと思います。クエリ。これが発生する理由とそれを回避する方法を確認していただければ幸いです。

4

0 に答える 0