何かをしようとするのは簡単なはずですが、linqとVBに苦労しています。以下に、コレクションをプロパティでグループ化してから、グループのプロパティにアクセスしたいというものがあります。私が抱えている問題は、匿名タイピングにあります。オプションstrictのため、明示的なタイプを指定する必要がありますが、タイプがどうあるべきかを理解できません。t.HeadAccountKeyは値ではないため、以下はコンパイルされません(tにはオブジェクトのタイプがあるため)。したがって、キャストを行う必要があるか、linqセレクターが間違っています。
public class TempObject
public HeadKey as string
Public SubKey as string
Public SomeValue as decimal
end class
public class GroupTest
public sub RunTest
dim collection new List(of TempObject) = GetTestCollection()
Dim groupedValues As IEnumerable = From n In collection _
Group By key = n.HeadKey Into Group Select HeadKeyValue = key, SubValues = Group
for each t as object in groupedValues
debug.print(t.HeadKeyValue)
next
End sub
private function GetTestCollection() as List(of TempObject)
dim result as new list(of tempobject)
Dim x As New tempObject
x.HeadAccountNumber = "A"
x.SubAccountNumber = "B"
x.Value = 500
result.Add(x)
x = New tempObject
x.HeadAccountNumber = "A"
x.SubAccountNumber = "C"
x.Value = 600
result.Add(x)
x = New tempObject
x.HeadAccountNumber = "B"
x.SubAccountNumber = "D"
x.Value = 100
result.add(x)
return result
end function
End class