expresssion:表達式的OrderBy LINQ與內表達
this.Students = this.Students.OrderBy(x => x.ExamData.OrderByDescending(p => p.ExamDate).ThenByDescending(p => p.ExamId).FirstOrDefault().TotalMarks);
雖然我的想法是抽象能夠製成一個lambda表達式使得表達爲
x => x.ExamData.OrderByDescending(p => p.ExamDate).ThenByDescending(
p => p.ExamId).FirstOrDefault().TotalMarks
我可以使用像
this.Students = this.Students.OrderBy(sortExpression);
這是因爲我有很多排序字段,如TotalMarks定義d,我想從排序字段創建表達式,然後調用OrderBy。
我知道從這個link,我們可以創建一個表達式,使用子屬性,但沒有得到內部表達式。
目前,我已經給了一個開關的情況下,寫同樣的東西在每種情況下像
this.Students = this.Students.OrderBy(x => x.ExamData.OrderByDescending(p => p.ExamDate).ThenByDescending(p => p.ExamId).FirstOrDefault().SubjectName);
所以我的想法是創建kindof的ExpressionBuilder與構建傳遞的字段名錶達的靜態方法,像
public static Expression BuildSortExpression(string fieldName) {}
Th在EF不會正確轉換。 – Servy 2013-02-20 18:29:42
好點,雖然在問題中沒有提到EF,所以我認爲這是一個直接的枚舉,但我會更新這個問題。 – Ben 2013-02-20 18:32:21
他指的是'Expression',它告訴我們這是一個IQueryable。它可能是一些其他的提供者,比如Linq to SQL,它可以支持這一點,但EF至少是一個可能的選擇。 – Servy 2013-02-20 18:34:05