Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.net中具有匿名类型和选项严格的Linq分组_Vb.net_Linq - Fatal编程技术网

VB.net中具有匿名类型和选项严格的Linq分组

VB.net中具有匿名类型和选项严格的Linq分组,vb.net,linq,Vb.net,Linq,尝试做一些我确信应该很简单的事情,但是要与linq和VB打交道。我有下面的例子,我用属性对集合进行分组,然后想要访问我的组的属性。我的问题是匿名打字。由于option strict,我必须给出一个显式类型,但我无法确定该类型应该是什么。由于t.HeadAccountKey不是值(因为t具有对象类型),因此无法编译下面的代码。所以要么我需要做一些铸造,要么我的linq选择器出错 public class TempObject public HeadKey as string Pub

尝试做一些我确信应该很简单的事情,但是要与linq和VB打交道。我有下面的例子,我用属性对集合进行分组,然后想要访问我的组的属性。我的问题是匿名打字。由于option 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

您不需要指定类型,至少使用(推荐,不要与
选项Strict
混淆)

因此,以下工作:

Dim collection = GetTestCollection()
Dim groupedValues = From n In collection
    Group n By n.HeadKey Into Group

For Each t In groupedValues
    Dim hk = t.HeadKey
    Dim group = t.Group
Next