2008-12-05 2 views
1

У меня есть некоторый SQL, который выполняет порядок в зависимости от случая. Он работает нормально. Я не могу воспроизвести его как Linq2Sql.Linq2Sql не может заказать анонимный тип?

Вот быстрая взломанная версия SQL i, сделанная, упрощенная и действительно заглушенная. Пожалуйста, проигнорируйте, что делает 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; 

Любая помощь, как я могу заказать на сазе?

ответ

5

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

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

ура! спасибо кучи. – 2008-12-05 02:35:42

Смежные вопросы