VB LINQ:当与Distinct一起使用时,Order By不起作用

时间:2013-12-10 21:38:26

标签: vb.net linq

我知道这应该是一个已经解决的问题,但我无法让记录的解决方案适合我。下面的代码假设在不同之后执行订单,但它没有。我提到了这篇文章:LINQ to SQL does not generate ORDER BY when DISTINCT is used?

fyMonth = (From f In DbContext.FYMonth
           Select f.Month).Distinct().OrderBy(Function(n) n).ToList()

我尝试时收到错误:

OrderBy(Function(n) n.SortOrder)

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的查询正在选择几个月,而您正在获得不同的月份。一个月不包含SortOrder属性,您无法再访问FYMonth个对象上的该属性。您需要在投影中加入SortOrder,然后对其进行排序,然后投射回月份。

fyMonth = DbContext.FYMonth
    .Select(Function(x) New With { x.Month, x.SortOrder })
    .Distinct
    .OrderBy(Function(x) x.SortOrder)
    .Select(Function(x) x.Month)

这假设每个月的SortOrder在所有月份都是相同的。