0

タイプ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();

しかし、これは決して機能せず、順序付けされていないリストを返し続けます。

誰かがこれで私を助けてくれますか?

ご協力いただきありがとうございます。

4

2 に答える 2

4

これを試して:

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

ここで言われているように、OrderBy は順序付けられた列挙型を返しているためです。Order by はコレクションの変更ではありません。

resharper を使用することを強くお勧めします。彼はそのようなものをキャッチして警告します

于 2013-09-10T13:19:32.717 に答える
2

次の戻り値を使用する必要がありますOrderBy

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

OrderByその場で注文しませんdistinctResult。代わりに、順序付けされた新しい列挙型を返します。

于 2013-09-10T13:20:16.667 に答える