2015-08-13 1 views
1

У меня есть группа по порядку и по заказу в sql-запросе, как показано ниже, как написать ту же логику в linq? : -Преобразование группы SQL по порядку и по Linq с использованием case

GROUP BY bd.bandcharge_desc, bd.rate 
    ORDER BY CASE 
      WHEN bd.bandcharge_desc LIKE '%above%' THEN 
      '1' 
      ELSE 
      '0' 
      END, 
      bd.bandcharge_desc,bd.rate ASC 
+0

Почему ноль (0) и один (1) между отдельными qoutes? –

+1

Возможный дубликат [Group in in LINQ] (http://stackoverflow.com/questions/7325278/group-by-in-linq) –

+1

Я пробовал вот так: orderby g.Key.bandcharge_desc Like '*/above/* '? 1: 0 по убыванию, что я пробовал, не работает, также я не думаю, что это может быть дубликат, потому что в случае, если palys играет важную роль в запросе. –

ответ

1

Попробуйте этот путь

orderby bd.bandcharge_desc.Contains("above")?1:0 descending , 
       bd.bandcharge_desc,bd.rate 
+0

это дает мне ошибку: сообщение об ошибке компилятора: CS1061: «строка» не содержит определения для «содержать», и не существует метода расширения «содержать», принимающий первый аргумент типа «строка» (если вы не используете директива или ссылка на сборку?). using System.Linq есть в файле C#. –

+0

Я вижу, что это тип, используя Contains, заставляя его работать, спасибо. –

0

попробовать:

.OrderBy(bd => bd.bandcharge_desc.Contains("above") ? 1 : 0) 
.ThenBy(bd => bd.bandcharge_desc) 
.ThenBy(bd => bd.rate) 
.GroupBy(bd => new {bd.bandcharge_desc, bd.rate})