Выберите отличное в запросе Linq - PullRequest
1 голос
/ 04 января 2012

У меня есть коллекция с такими данными.

-------------------------------------------- 
|  key   | customer Name | code | isActive | 
--------------------------------------------
| 30002  |    XYZ        | 234  |     1    |
--------------------------------------------
| 30002  |    XYZ        | 234  |     1    |
--------------------------------------------
| 30002  |    XYZ        | 234  |     1    |
--------------------------------------------
| 30034  |    ERR        | 344  |     1    |
--------------------------------------------
| 30031  |    LDD        | 343  |     1    |
--------------------------------------------

как выбрать отдельные данные, используя linq?

Ответы [ 2 ]

6 голосов
/ 04 января 2012

капитан очевидно сказал, что вы должны использовать Distinct метод linq: -)

5 голосов
/ 04 января 2012

Вы можете создать свой собственный сравнитель следующим образом:

public class MyComparer : IEqualityComparer<DataRow>
    {
        public bool Equals(DataRow x, DataRow y) {
            return x["col1"] == y.["col1"] && x["col2"] == y.["col2"];
        }

        public int GetHashCode(DataRow obj) {
            return obj["col1"].GetHashCode() ^ obj["col2"].GetHashCode();
        }
    }

Затем используйте:

var distinctRows = (from dr in table.AsEnumerable()
select dr).Distinct(new MyComparer());

Я думаю, что код можно оптимизировать, но общая идея представлена ​​:)1007 *

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