Assumming that you want to join data, try this:
var result = dt1.AsEnumerable()
.Union(dt2.AsEnumerable(), new MyComparer())
.OrderBy(x=>x.Field<int>("ID"));</int>
And the definition of comparer class:
public class MyComparer : IEqualityComparer<datarow>
{
public bool Equals(DataRow x, DataRow y)
{
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.Field<int>("ID") == y.Field<int>("ID");
}
public int GetHashCode(DataRow dr)
{
if (Object.ReferenceEquals(dr, null)) return 0;
return dr.Field<int>("ID").GetHashCode();
}
}</int></int></int></datarow>
Result:
ID Name
101 AA
102 BB
103 CC
104 DD
105 EE
106 FF
107 GG
108 HH
More at:
Enumerable.Union(TSource) Method (IEnumerable(TSource), IEnumerable(TSource), IEqualityComparer(TSource)) (System.Linq)[
^]
You may want to use:
Enumerable.Intersect(TSource) Method (IEnumerable(TSource), IEnumerable(TSource), IEqualityComparer(TSource)) (System.Linq)[
^] too.