LINQ to Entities / IQueryable:对多个字段进行排序

时间:2010-01-29 19:11:30

标签: linq sorting 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之前出现。(假设代码是数字字段)

对此进行排序的最佳方法是什么,因此代码按数字排序?

2 个答案:

答案 0 :(得分:7)

您可能希望使用ThenBy扩展方法能够按多个字段排序;) 在您的情况下将是

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

答案 1 :(得分: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);