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

发布于 2024-08-19 06:57:17 字数 336 浏览 5 评论 0原文

我想对以下内容进行排序:

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 是数字字段)

对此进行排序以便 Code 按数字排序的最佳方法是什么?

I have the following that I'd like to sort:

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));

This works, but it sorts alphabetically - so 12 comes before 9. (Assume Code is a numeric field)

What is the best way to sort this so Code is sorted numerically?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

葬シ愛 2024-08-26 06:57:17

您可能希望使用 ThenBy 扩展方法来按多个字段排序;)
在你的情况下,那就是

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

You probably want to use the ThenBy extension method to be able to sort by multiple fields ;)
In your case that would be

 return list.OrderBy(m=>m.L.DP.Name).ThenBy(m => m.L.Code);
无敌元气妹 2024-08-26 06:57:17
 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);
 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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文