Как выполнить TOP, ORDER BY и DISTINCT в одном запросе с Linq-To-Sql? - PullRequest
2 голосов
/ 01 мая 2009

Как перевести следующий запрос в Linq?

  SELECT DISTINCT TOP 10 A.*,A.X+A.Y AS SUMXY
  FROM TABLE_A AS A INNER JOIN TABLE_B AS B ON A.ID = B.AID
  ORDER BY SUMXY

Я не хочу делиться на два запроса.

1 Ответ

6 голосов
/ 01 мая 2009

Используя методы расширения и предполагая, что у вас есть отношение внешнего ключа между Table_A и Table_B, так что в таблице TableAs есть EntitySet с именем TableBs (это было бы проще, если использовать реальные имена таблиц ... вздох).

var query = db.TableAs.Where( a => a.TableBs.Count() > 0 )
                      .Select( a => new { A = a, SumXY = a.X + a.Y } )
                      .OrderBy( a => a.SumXY )
                      .Take( 10 );

Это вернет вам коллекцию объектов анонимного типа, имеющих объект TableA с именем A и SumXY (предположительно, int). В качестве альтернативы вы можете создать реальный класс, содержащий данные A плюс сумму, и выбрать объекты этого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...