Linq to Entities Group by Order By Not Working

时间:2013-09-10 13:18:39

标签: c# linq entity-framework linq-to-entities

我有一个查询,我想返回 tblcours 类型的对象列表,就像这样

public IList<tblcours> GetAllLiveCoursesByUnitID(int id)
{
    Expression<Func<tblcours, bool>> predicate = x => x.tblCourseCategoryLinks.Any(cl => cl.tblUnitCategory.tblUnit.unitID == id);
    int headingId = 180;

    var distinctResult = from c in _UoW.tblcoursRepo.All
                             .Where(c => c.MainHeadingID != headingId)
                             .Where(predicate)
                             group c by c.MainHeadingID into uniqueIds
                             select uniqueIds.FirstOrDefault();

    return distinctResult.ToList();

}

此查询正在执行的操作是获取 tblcours 类型的对象列表,然后删除具有相同 MainHeadingID 的重复记录。这很好用,但是,我还需要将返回的数据按字母顺序排列,但是,无论我尝试什么,我都不能这样做。

到目前为止,我已尝试过以下

distinctResult.OrderBy(c => c.CourseTitle);
return distinctResult.ToList();

但是这永远不会奏效,它只会继续返回无序的列表。

有人可以帮帮我吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

试试这个:

distinctResult= distinctResult.OrderBy(c => c.CourseTitle);
return distinctResult.ToList();

因为OrderBy返回有序可枚举为here is said。 Order by不是modyfing collection。

我强烈建议使用resharper,他会抓住这些东西并警告你

答案 1 :(得分:2)

您需要使用OrderBy的返回值:

return distinctResult.OrderBy(c => c.CourseTitle).ToList();

OrderBy未订购distinctResult。相反,它返回一个有序的新枚举。