Linq2Sql不能命令匿名类型?

时间:2008-12-05 01:01:18

标签: 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
            WHEN LEN(u.Name) < 10 THEN 3
            WHEN LEN(u.Name) < 5555 THEN 4
            ELSE 5
        END 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;

我可以通过案例陈述订购任何帮助吗?

1 个答案:

答案 0 :(得分:5)

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

orderby (u.Name == null ? 1 :
         u.Name.Length < 3 ? 2 :
         u.Name.Length < 10 ? 3 :
         u.Name.Length < 5555 ? 4 :
         5)