0
我想從兩個數據表中獲取公共行。但是在這兩者上的交集操作消除了重複的行(在同一個數據表中重複)並且只返回唯一的行。作爲枚舉交集的結果保留重複行
如何在結果中保留重複行?這裏是我的代碼:
class Program
{
public static void Main(string[] args)
{
var a=ImportExcelToDataTable(@"D:\Dummy\Test\CD24.xlsx");
var b = ImportExcelToDataTable(@"D:\Dummy\Test\CD25.xlsx");
CustomDataRowComparer myDRComparer = new CustomDataRowComparer();
try
{
var comonData = a.AsEnumerable().Intersect(b.AsEnumerable(), myDRComparer).CopyToDataTable();
}
catch (Exception ex)
{
ex.ToString();
}
}
}
public class CustomDataRowComparer : IEqualityComparer<DataRow>
{
public bool Equals(DataRow x, DataRow y)
{
for (int i = 0; i < 6; i++)
{
if (i == 4)
{
//ignore
}
else
{
if (x[i].ToString() != y[i].ToString())
{
return false;
}
}
}
return true;
}
public int GetHashCode(DataRow obj)
{
return string.Join("^", obj.ItemArray.Select((x, i) => (i == 4) || (i > 6) ? "" : x.ToString()).ToArray()).GetHashCode();
}
}
這將從單個數據表中返回重複的行,但我想在兩個數據表之間獲得顯示重複行的公共行。例如。如果第一個數據表具有2個相同的行A和B,則Intersection應顯示兩行。 –
嘗試像下面這樣做:讓我們說你必須比較表的ID:table1.Field(「ID」)等於Convert.ToInt32(table2.Field (「ID」)) –
Lakhtey