方法一:
DataTable dt3 = new DataTable();
if (dt.Rows.Count > dt_Hight.Rows.Count)
{
dt3 = FillData(dt, dt_Hight);
}
else
{
dt3 = FillData(dt_Hight, dt);
}
DataTable FillData(DataTable dt, DataTable dt_Hight)
{
//dt
DataTable dt3 = dt.Clone();
for (int i = 0; i < dt_Hight.Columns.Count; i++)
{
//再向新表中加入dt_Name的列结构
dt3.Columns.Add(dt_Hight.Columns[i].ColumnName);
}
object[] obj = new object[dt3.Columns.Count];
//添加dt的数据
for (int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i].ItemArray.CopyTo(obj, 0);
dt3.Rows.Add(obj);
}
for (int i = 0; i < dt_Hight.Rows.Count; i++)
{
for (int j = 0; j < dt_Hight.Columns.Count; j++)
{
dt3.Rows[i][j + dt.Columns.Count] = dt_Hight.Rows[i][j].ToString();
}
}
return dt3;
}
//-------------交集,合集,差集start---------------
IEnumerable<DataRow> query2 = dt1.AsEnumerable().Intersect(dt2.AsEnumerable(), DataRowComparer.Default);
DataTable dt3 = query2.CopyToDataTable();
IEnumerable<DataRow> query3 = dt1.AsEnumerable().Union(dt2.AsEnumerable(), DataRowComparer.Default);
DataTable dt4 = query3.CopyToDataTable();
IEnumerable<DataRow> query4 = dt1.AsEnumerable().Except(dt2.AsEnumerable(), DataRowComparer.Default);
DataTable dt5 = query4.CopyToDataTable();
方法二:
try{
DataTable dt = new DataTable();
DataTable dt_stock = new DataTable();
var query =
from rs in dt.AsEnumerable()
from re in dt_stock.AsEnumerable()
//筛选条件
where rs.Field<string>("storage_id") == re.Field<string>("storage_id")
&& rs.Field<string>("material") == re.Field<string>("material")
//筛选需要的字段
select new
{
};
//构造新dt对象
DataTable dtNew = new DataTable();
dtNew.Columns.Add("available_stock",typeof(int));
foreach (var obj in query)
{
dtNew.Rows.Add( obj.available_stock);
}
return dtNew;
}