Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.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中通过Group By从LINQ语句返回(字符串)列表?_Vb.net_Linq - Fatal编程技术网

如何在VB.net中通过Group By从LINQ语句返回(字符串)列表?

如何在VB.net中通过Group By从LINQ语句返回(字符串)列表?,vb.net,linq,Vb.net,Linq,我已经看到了一些关于如何在C中实现这一点的问题,但我在将这些问题转换为VB时遇到了困难。以下是我的问题的基本内容: 未通过实体框架规范化和访问的数据表 获取特定字段中的所有唯一字符串值 将这些值转换为字符串列表 这是可行的,但我猜有一种更好的方法可以做到这一点,而无需反复浏览列表: Public Function GetGroups() As IEnumerable(Of String) Dim GroupList As New List(Of String) Dim Code

我已经看到了一些关于如何在C中实现这一点的问题,但我在将这些问题转换为VB时遇到了困难。以下是我的问题的基本内容:

未通过实体框架规范化和访问的数据表 获取特定字段中的所有唯一字符串值 将这些值转换为字符串列表 这是可行的,但我猜有一种更好的方法可以做到这一点,而无需反复浏览列表:

Public Function GetGroups() As IEnumerable(Of String)
    Dim GroupList As New List(Of String)

    Dim CodeList = (From c In Context.Codes
                    Group c.Group By c.Group Into g = Group)

    For Each c In CodeList
        GroupList.Add(c.Group)
    Next

    Return GroupList
End Function

我似乎最头疼的是在LINQ中使用Group By。我猜这可能需要1行或2行来完成,方法是让LINQ只返回字符串列表,或者将匿名对象列表转换为字符串列表。

好吧,如果您不需要组中的任何内容,您可以使用。Distinct:


编辑:按添加订单。如果您不需要组中的任何内容,您可以使用。不同:


编辑:按添加订单。如果您不需要组中的任何内容,您可以使用。不同:


编辑:按添加订单。如果您不需要组中的任何内容,您可以使用。不同:



编辑:Added Order By

代码让我很困惑,但您的描述听起来像是希望在上下文中从c返回。代码选择c。Group Distinct,其中Group是您希望唯一值来自的属性?听起来像是您真正寻找的是Distinct而不是Group By,因为您没有进行任何类型的聚合、求和,等等。如果您没有使用LinqPad,我强烈推荐它。它帮助我了解了这个团队在Linq的工作方式。如果你已经习惯了T-SQL,那么它与T-SQL完全不同。@pseudocoder现在按照你的建议安装LinqPad。@坦白地说,这也让我感到困惑,但这就是我经过一系列搜索和修改后的结果。代码让我感到困惑,但你的描述听起来像是你希望在上下文中从c返回。代码选择c。组独立,其中Group是您想要从中获取唯一值的属性?听起来您真正想要的是Distinct而不是Group By,因为您没有进行任何类型的聚合、求和等。如果您没有使用LinqPad,我强烈建议您使用它。它帮助我了解了这个团队在Linq的工作方式。如果你已经习惯了T-SQL,那么它与T-SQL完全不同。@pseudocoder现在按照你的建议安装LinqPad。@坦白地说,这也让我感到困惑,但这就是我经过一系列搜索和修改后的结果。代码让我感到困惑,但你的描述听起来像是你希望在上下文中从c返回。代码选择c。组独立,其中Group是您想要从中获取唯一值的属性?听起来您真正想要的是Distinct而不是Group By,因为您没有进行任何类型的聚合、求和等。如果您没有使用LinqPad,我强烈建议您使用它。它帮助我了解了这个团队在Linq的工作方式。如果你已经习惯了T-SQL,那么它与T-SQL完全不同。@pseudocoder现在按照你的建议安装LinqPad。@坦白地说,这也让我感到困惑,但这就是我经过一系列搜索和修改后的结果。代码让我感到困惑,但你的描述听起来像是你希望在上下文中从c返回。代码选择c。组独立,其中Group是您想要从中获取唯一值的属性?听起来您真正想要的是Distinct而不是Group By,因为您没有进行任何类型的聚合、求和等。如果您没有使用LinqPad,我强烈建议您使用它。它帮助我了解了这个团队在Linq的工作方式。如果你已经习惯了T-SQL,那么它与T-SQL完全不同。@pseudocoder现在按照你的建议安装LinqPad。@马克,坦白说,这也让我感到困惑,但这正是我经过一系列搜索和摆弄之后的结果。正确。即使你把它作为一个群组来写,它也会被优化成一个选择性的,不同的。我遇到的唯一问题是我失去了订单。代码中的Group By必须执行OrderBy。我需要像这样添加OrderBy:.Distinct.orderbyfunction g.ToList.Correct。即使你把它作为一个群组来写,它也会被优化成一个选择性的,不同的。我遇到的唯一问题是我失去了订单。代码中的Group By必须执行OrderBy。我需要像这样添加OrderBy:.Distinct.orderbyfunction g.ToList.Correct。即使你把它作为一个群组来写,它也会被优化成一个选择性的,不同的。我遇到的唯一问题是我失去了订单。代码中的Group By必须执行OrderBy。我需要像这样添加OrderBy:.Distinct.orderbyfunction g.ToList.Correct。即使你把它作为一个群组来写,它也会被优化成一个选择性的,不同的。我遇到的唯一问题是我失去了订单。代码中的Group By必须执行OrderBy。我需要像这样添加OrderBy:.Distinct.orderbyfunction g.ToList。
Return (
    From c In Context.Codes
    Order By c.Group
    Select c.Group
).Distinct().ToList()