linq排序的问题,求救……
- C# code
class boolcompare : IComparer<bool ?> { public int Compare(bool? b1, bool? b2) { if (b1 != null && b2 != null) { return b1.Value.CompareTo(b2.Value); } else if (b1 == null && b2== null) { return 0; } else if (b1 == null && b2 == true) { return 1; } else if (b1 == null && b2 == false) { return -1; } else if (b1 == true && b2 == null) { return -1; } else if (b1 == false && b2 == null) { return 1; } else { return -1; } } public static IComparer<bool ?> boolcompareAscending() { return (IComparer<bool ?>)(new boolcompare()); } } public List<Information> getinforMationByReceverID(int receverID) { //临时的比较器类 IComparer<bool?> bx = boolcompare.boolcompareAscending(); return em.Information.Where(f => f.ReceiveUserID == receverID).OrderBy(g => (g.IfRead)).ThenBy(g => g.IfDo,bx).ThenByDescending(g => (g.SendDate)).ToList(); }.ThenBy(g => g.IfDo,bx)这会报错
LINQ to Entities 不识别方法“……”,因此该方法无法转换为存储表达式。
求大侠指教如何排序
或者给个别的方法 IfDo 这个字段需要按 false,null,true这样的顺序排序
[解决办法]
既然 linq2EF不能识别表达式
那就先转化成linq2object试试 :
return em.Information.Where(f => f.ReceiveUserID == receverID).ToList().OrderBy(g => (g.IfRead)).ThenBy(g => g.IfDo,bx).ThenByDescending(g => (g.SendDate)).ToList();