在Linq查询中选择distinct

Aro*_*ran 1 c# linq vb.net asp.net visual-studio-2010

我有一个像这样的数据的集合.

-------------------------------------------- 
|  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    |
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)

如何使用linq选择不同的数据?

Nag*_*agg 6

船长明显说你应该使用Distinctlinq方法:-)


Ale*_* Dn 5

您可以像这样创建自己的比较器:

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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后使用:

var distinctRows = (from dr in table.AsEnumerable()
select dr).Distinct(new MyComparer());
Run Code Online (Sandbox Code Playgroud)

我认为代码可以优化,但总体思路是:)