Linq to sql Linq2Sql无法按匿名类型排序?

Linq to sql Linq2Sql无法按匿名类型排序?,linq-to-sql,Linq To Sql,我有一些SQL,它执行按案例排序语句。它很好用。我无法将其复制为Linq2Sql 这是我制作的SQL的一个快速黑客版本,简化了,并且真正简化了。对于这个问题,请忽略我编造的sql试图做什么(从业务逻辑上看) SELECT u.Id, u.Name FROM Users u ORDER BY CASE WHEN u.Name IS NULL THEN 1 WHEN LEN(u.Name) < 3 THEN 2

我有一些SQL,它执行按案例排序语句。它很好用。我无法将其复制为Linq2Sql

这是我制作的SQL的一个快速黑客版本,简化了,并且真正简化了。对于这个问题,请忽略我编造的sql试图做什么(从业务逻辑上看)

SELECT      
    u.Id,
    u.Name
FROM Users u
ORDER BY CASE 
            WHEN u.Name IS NULL THEN 1
            WHEN LEN(u.Name) < 3 THEN 2
            WHEN LEN(u.Name) < 10 THEN 3
            WHEN LEN(u.Name) < 5555 THEN 4
            ELSE 5
        END ASC
选择
u、 身份证,
u、 名字
来自用户u
逐案订购
当u.Name为空时,则为1
当LEN(u.Name)<3时,则为2
当LEN(u.Name)<10时,则为3
当LEN(u.Name)<5555时,则4
其他5
结束ASC
当我在一些Linq2Sql中尝试这一点时。。我收到一个匿名错误

以下是Linq2Sql代码:_

from u in db.User
orderby new {
            UserNameType = (u.Name == null ? 1 :
                            u.Name.Length < 3 ? 2 :
                            u.Name.Length < 10 ? 3 :
                            u.Name.Length < 5555 ? 4 :
                            5)
             }
select u;
来自数据库用户中的u
orderby new{
UserNameType=(u.Name==null?1:
u、 名称。长度<3?2:
u、 名称。长度<10?3:
u、 名称。长度<5555?4:
5)
}
选择u;

关于如何通过case语句进行排序,有什么帮助吗?

不要构造匿名类型,只需直接对对象执行条件

orderby (u.Name == null ? 1 :
         u.Name.Length < 3 ? 2 :
         u.Name.Length < 10 ? 3 :
         u.Name.Length < 5555 ? 4 :
         5)
orderby(u.Name==null?1:
u、 名称。长度<3?2:
u、 名称。长度<10?3:
u、 名称。长度<5555?4:
5)

不要构造匿名类型,只需直接在对象上执行条件

orderby (u.Name == null ? 1 :
         u.Name.Length < 3 ? 2 :
         u.Name.Length < 10 ? 3 :
         u.Name.Length < 5555 ? 4 :
         5)
orderby(u.Name==null?1:
u、 名称。长度<3?2:
u、 名称。长度<10?3:
u、 名称。长度<5555?4:
5)