LINQ to Entites / IQueryable: сортировка по нескольким полям - PullRequest
2 голосов
/ 29 января 2010

У меня есть следующее, что я хотел бы отсортировать:

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 ]

7 голосов
/ 29 января 2010

Возможно, вы захотите использовать метод расширения ThenBy, чтобы иметь возможность сортировки по нескольким полям;) В вашем случае это будет

 return list.OrderBy(m=>m.L.DP.Name).ThenBy(m => m.L.Code);
0 голосов
/ 21 сентября 2012
 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);
...