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