Linq Single Column Group By не работает - PullRequest
0 голосов
/ 26 июля 2011

Я новичок в Linq, поэтому, пожалуйста, извините за мое невежество, но мне нужно сгруппировать по столбцу в таблице, а затем вернуть только этот столбец.В итоге я должен получить список уникальных чисел.

Это мой Linq

from r in myTable
group r.UserID by r.UserID

, но в панели Linq он приближается к тому, что я хочу, но каждый похожий идентификатор имеет «ключ»или что-то с одинаковыми идентификаторами, сгруппированными вместе, включенными в результаты.Я просто хочу список чисел.

это идеальный SQL.

SELECT UserID FROM myTable
GROUP BY UserID

Ответы [ 3 ]

6 голосов
/ 26 июля 2011

Почему бы не

var userIds = myTable.Select(r => r.UserId).Distinct();

или, если вы предпочитаете синтаксис запроса

var userIds = (from r in myTable select r.UserId).Distinct();

Группировка не нужна, если вы собираетесь использовать только идентификаторы групп.

1 голос
/ 26 июля 2011

Я думаю, что фактический SQL, который вы хотите,

SELECT DISTINCT UserID FROM myTable

Group by делает то же самое, что и побочный эффект от его конкретного использования.

Я полагаю, что тот же синтаксис, скорее всего, функционален в синтаксисе операторов LINQ, и то, что сказал dlev, будет работать, хотя я не уверен, что он правильно конвертируется в SQL, поскольку его нет в синтаксисе операторов.

Если я ошибаюсь, и L2S правильно конвертирует его версию, тогда у dlev есть привязка.

0 голосов
/ 26 июля 2011

Ваш запрос дает вам группы. Если вы просто хотите ключи, вы должны получить ключи.

IQueryable<IGrouping<int, Record>> query1 =
  from r in myTable
  group r.UserID by r.UserID;

IQueryable<int> query2 =
  from r in myTable
  group r.UserID by r.UserID into g
  select g.Key;

  //alternatively
query1 = myTable.GroupBy(r => r.UserID);
query2 = query1.Select(g => g.Key);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...