Linq2Sql не может заказать анонимный тип? - PullRequest
1 голос
/ 05 декабря 2008

У меня есть какой-то 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 Ответ

5 голосов
/ 05 декабря 2008

Не создавайте анонимный тип, просто сделайте условные выражения непосредственно для вашего объекта.

orderby (u.Name == null ? 1 :
         u.Name.Length < 3 ? 2 :
         u.Name.Length < 10 ? 3 :
         u.Name.Length < 5555 ? 4 :
         5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...