我有一些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;
我可以通过案例陈述订购任何帮助吗?
答案 0 :(得分:5)
不要构造匿名类型,只需直接在对象上进行条件化。
orderby (u.Name == null ? 1 :
u.Name.Length < 3 ? 2 :
u.Name.Length < 10 ? 3 :
u.Name.Length < 5555 ? 4 :
5)