Как выбрать отличительные по col, используя linq / projection? - PullRequest
0 голосов
/ 02 декабря 2011

Как мне заставить работать следующее с x.name?

var x= db.Cs.Select(x => new{name=x.name,id=x.id}).Distinct().ToList();

На следующих данных примера:

name, id
joe, 1
joe, 2
joe, 3

Я получаю весь набор обратно, используяотдельный запрос выше:

name, id
joe, 1
joe, 2
joe, 3

Очевидно, что мне действительно нужна одна уникальная строка, но мне все еще нужен идентификатор (то есть):

name, id
joe, 1

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Просто чтобы завершить пост Стефана. Результатом его кода является IGrouping .... Если вы хотите, чтобы ваш идентификатор / имя анонимного типа, просто добавьте это:

var x = db.Cs.Select(x => new { x.name, x.id})
            .GroupBy(x => x.name)
            .Select(g => g.First()) 
1 голос
/ 02 декабря 2011

Вы можете использовать метод GroupBy :

var x = db.Cs.Select(x => new { x.name, x.id}).GroupBy(x => x.name);

Тогда вы получите словарь, где ключом будет имя и значение вашей проекции.

Или, если вы действительно хотите использовать отдельное, вы можете написать свой собственный IEqualityComparer и использовать правильную Отличительную перегрузку .

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