2010-01-29 58 views
1

我有以下的,我想排序:LINQ到的entites/IQueryable的:對多個字段

IQueryable<Map> list; 
list = from item in ctx.MAP 
     .Include("C") 
     .Include("L") 
     .Include("L.DP") 
     select item; 
return list.OrderBy(m=>(m.L.DP.Name + m.L.Code)); 

這工作,但它的字母順序排列 - 這樣12來之前9.(假設代碼是一個數字字段)

什麼是最好的排序方式這樣Code對數字進行排序?

回答

6

你可能想使用ThenBy擴展方法能夠通過多個字段進行排序;) 在你的情況,這將是

return list.OrderBy(m=>m.L.DP.Name).ThenBy(m => m.L.Code); 
+0

沒有辦法做到這一點,如果mLCode居然是字符串,並需要轉換爲一個int? – chris 2010-01-29 19:22:12

+0

可能int.Parse會工作,你可以直接在lambda表達式中進行轉換,然後按照數字順序排序 – 2010-01-29 19:24:20

0
var results = db.Blogs.AsEnumerable() 
        .Select(sr => new 
        { 
         Searchresult = sr, 
         Words = Regex.Split(sr.Name, @"[^\S\r\n {1,}").Union(Regex.Split(sr.Name2, @"[^\S\r\n]{1,}")) 
        }) 
        .OrderByDescending(x => x.Words.Count(w => { 
         foreach (var item in searchTerms) 
         { 
          if(w.ToLower().Contains(item)) 
          { 
           return true; 
          } 
         } 
          return false; 
        })) 
        .Select(x => x.Searchresult); 
+0

任何你可以解釋這段代碼的機會,這樣有人可以理解它,爲什麼它可能是這個問題的答案? – 2012-09-25 04:49:30