OrderBy不起作用

时间:2014-10-16 09:58:16

标签: c# linq morelinq

我正在尝试以下代码:

public IList<Brand> GetMobileDeviceBrands()
{
     var dataContext = dataContextFactory.CreateContext();

     var brands = (from b in dataContext.Brands
                   join d in dataContext.Devices on b.ID equals d.BrandID
                   where d.DeviceTypeID != 1
                   select b).OrderBy(b => b.Name).Distinct().ToList();

     return brands;         // not ordered by Name here
}

但未按预期获得有序结果。

如果我在控制器中将orderBy写为:

var Brands = devicesListService.GetMobileDeviceBrands().OrderBy(b => b.Name).ToList();

它做得很好。我不知道出了什么问题。

1 个答案:

答案 0 :(得分:4)

distinct运算符不保证保持值的顺序完整,因此您需要交换orderby和distinct运算符:

var brands = (from b in dataContext.Brands
                   join d in dataContext.Devices on b.ID equals d.BrandID
                   where d.DeviceTypeID != 1
                   select b).Distinct().OrderBy(b => b.Name).ToList();