Category
SubCategory
Category與SubCategory存在Association (SubCategory.CategoryId與Category.CategoryId)。
現在我們要針對SubCategory做多欄位排序,我們想先依SubCategory.CategoryId排序後,再對SubCategory.SubCategoryId做排序,該怎麼做呢?
方法1,使用Query Builder Methods + Lambda
MyAccountEntities db = new MyAccountEntities(); return db.SubCategory.Include("Category") .OrderBy(c => c.Category.CategoryId) .ThenBy(c => c.SubCategoryId) .ToList();
方法2,使用Query Builder Methods + Entities SQL
MyAccountEntities db = new MyAccountEntities(); return db.SubCategory.Include("Category") .OrderBy("it.Category.CategoryId, it.SubCategoryId") .ToList();it在這裡指的是SubCategory這個context,此為固定用法。
錯誤用法
Pete第一次研究如何做多欄排序時沒有發現有ThenBy這個好用的method,所以就下了以下的錯誤語法
MyAccountEntities db = new MyAccountEntities(); return db.SubCategory.Include("Category") .OrderBy(c => c.Category.CategoryId) .OrderBy(c => c.SubCategoryId) .ToList();中文語意上看起來好像也沒錯,我想先OrderBy Category.CategoryId,然後OrderBy SubCategory.SubCategoryId。
這麼做也不會有錯誤訊息,但最後的結果是根據最後一個OrderBy method來排序。