首页 新闻 会员 周边 捐助

linq中的排序

0
悬赏园豆:20 [已解决问题] 解决于 2017-09-28 15:35

高一、高二、高三如何利用linq排序(因为是汉字,所以无法识别,排的很乱)

偶像之路的主页 偶像之路 | 初学一级 | 园豆:3
提问于:2017-09-28 09:43
< >
分享
最佳答案
1

List<string> order = new List<string>() {
"高一","高二","高三"
};

var list = (from book in Info
where book.sport== Sport && book.id == Id && book.weeks == Week
select book).ToList();
var lis = list.OrderBy(x =>  order.IndexOf(x.nianji));

收获园豆:15
海之殇 | 菜鸟二级 |园豆:500 | 2017-09-28 14:59

高一、高二、和高三是info表中原来就有的字段,直接通过orderby book.nianji来排序,该如何实现,谢谢

偶像之路 | 园豆:3 (初学一级) | 2017-09-28 15:04

@偶像之路: 可以是可以,不过需要自己定义排序规则

public class nianjiOrder : IComparer<string>
        {
            private List<string> order = new List<string>() {
                "高一","高二","高三"
            };
            public int Compare(string x, string y)
            {
                int indexx = order.IndexOf(x);
                int indexy = order.IndexOf(y);
                if (indexx > indexy)
                {
                    return 1;
                }
                else if (indexx == indexy)
                {
                    return 0;
                }
                else {
                    return -1;
                }
            }
        }

调用

var result = info.OrderBy(book=>book.nianji, new nanjiOrder()); 

 

 

海之殇 | 园豆:500 (菜鸟二级) | 2017-09-28 15:30

@海之殇: 感谢

偶像之路 | 园豆:3 (初学一级) | 2017-09-28 15:35
其他回答(3)
0

你都知道是汉字,电脑真是太笨了。只懂得用拼音或者编码排序,无法使用语义排序,太愚蠢了。

骚年,需要你横空出世,拯救这个世界。

爱编程的大叔 | 园豆:30844 (高人七级) | 2017-09-28 09:54
1

最简单的法子是定义一个排序数组.new[]{高一,高二,高三}

其他数组以这个排序数组为准排序.

PS.你以为你以为的就是你以为的吗?

吴瑞祥 | 园豆:29449 (高人七级) | 2017-09-28 09:56
1

list.OrderBy(x=> SqlFunctions.CharIndex("高一,高二,高三",x.grade))

收获园豆:5
liuxb1991 | 园豆:661 (小虾三级) | 2017-09-28 09:58

var list = (from book in Info
where book.sport== Sport && book.id == Id && book.weeks == Week
select book).ToList();
var lis = list.OrderBy(x => SqlFunctions.PatIndex("高一,高二,高三", x.nianji));

支持(0) 反对(0) 偶像之路 | 园豆:3 (初学一级) | 2017-09-28 10:33

我这样添加进入,会报下面这个错误

只能从 LINQ to Entities 调用此函数。”

支持(0) 反对(0) 偶像之路 | 园豆:3 (初学一级) | 2017-09-28 10:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册