看看這個工程
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DataTable dtFirst = new DataTable();
dtFirst.Columns.Add("Fieldname", typeof(string));
dtFirst.Columns.Add("Newvalue", typeof(int));
dtFirst.Columns["Newvalue"].AllowDBNull = true;
dtFirst.Rows.Add(new object[] {"antenastructure", 12});
dtFirst.Rows.Add(new object[] {"slno", 2});
dtFirst.Rows.Add(new object[] {"servicelevel"});
dtFirst.Rows.Add(new object[] {"powersupply"});
string[] dtFirstValidRows = dtFirst.AsEnumerable().Where(x => x.Field<int?>("Newvalue") != null).Select(x => x.Field<string>("Fieldname")).ToArray();
DataTable dtMaster = new DataTable();
dtMaster.Columns.Add("Mastertabe", typeof(string));
dtMaster.Columns.Add("Masterfield", typeof(string));
dtMaster.Columns.Add("infoid", typeof(int));
dtMaster.Columns["infoid"].AllowDBNull = true;
dtMaster.Columns.Add("zvalue", typeof(int));
dtMaster.Columns["zvalue"].AllowDBNull = true;
dtMaster.Columns.Add("qvalue", typeof(int));
dtMaster.Columns["qvalue"].AllowDBNull = true;
dtMaster.Rows.Add(new object[] {"M_seq", "antenastructure", 123});
dtMaster.Rows.Add(new object[] {"M_seq", "slno", 1});
dtMaster.Rows.Add(new object[] {"M_seq", "servicelevel", 133});
dtMaster.Rows.Add(new object[] {"M_seq", "powersupply", 154});
dtMaster.Rows.Add(new object[] {"M_seq", "azimheight", 124});
dtMaster = dtMaster.AsEnumerable().Where(x => dtFirstValidRows.Contains(x.Field<string>("Masterfield"))).CopyToDataTable();
}
}
}
來吧,這是微不足道的 - 你應該能夠自己編寫這個了 - 告訴我們您的迄今爲止的努力?只需在dtFirst上執行Rows.Select以獲取沒有NewValues的項目,然後迭代dtMaster,在dtFirst中刪除沒有值的行。 –
我使用了鏈接http://www.codeproject.com/Questions/686406/How-To-Compare-and-delete-datatable-row-using-Csha中提到的邏輯,但他們都沒有成功 – peter