高一、高二、高三如何利用linq排序(因为是汉字,所以无法识别,排的很乱)
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));
高一、高二、和高三是info表中原来就有的字段,直接通过orderby book.nianji来排序,该如何实现,谢谢
@偶像之路: 可以是可以,不过需要自己定义排序规则
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());
@海之殇: 感谢
你都知道是汉字,电脑真是太笨了。只懂得用拼音或者编码排序,无法使用语义排序,太愚蠢了。
骚年,需要你横空出世,拯救这个世界。
最简单的法子是定义一个排序数组.new[]{高一,高二,高三}
其他数组以这个排序数组为准排序.
PS.你以为你以为的就是你以为的吗?
list.OrderBy(x=> SqlFunctions.CharIndex("高一,高二,高三",x.grade))
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));
我这样添加进入,会报下面这个错误
只能从 LINQ to Entities 调用此函数。”