1

我正在尝试以下代码:

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();

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

4

1 回答 1

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();
于 2014-10-16T10:10:25.667 回答