C#DataTable俩个对比取值问题
有没有整体判断 尽可能不用For循环一个一个判断
回答
如果你要进行多次对比的话,可以先将dt2扔到一个字典中,只需要循环一次,当然如果只是一次,那就没必要了,直接用linq最简单
static void Start() {
var dt1 = StructTable1();
var dt2 = StructTable2();
var dict = dt2.AsEnumerable().ToDictionary(dr => { return Convert.ToInt32(dr["ID"]); });
int id = Convert.ToInt32(dt1.Rows[0]["ID"]);
DataRow n = dict[id];
string name = n["Name"].ToString();
int age = Convert.ToInt32(n["Age"]);
}
static DataTable StructTable1() {
DataTable dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("ID", typeof(int)));
dt1.Columns.Add(new DataColumn("Name", typeof(string)));
DataRow dr1 = dt1.NewRow();
dr1["ID"] = 1;
dr1["Name"] = "45";
dt1.Rows.Add(dr1);
return dt1;
}
static DataTable StructTable2() {
DataTable dt2 = new DataTable();
dt2.Columns.Add(new DataColumn("ID", typeof(int)));
dt2.Columns.Add(new DataColumn("Name", typeof(string)));
dt2.Columns.Add(new DataColumn("Age", typeof(string)));
DataRow dr1 = dt2.NewRow();
dr1["ID"] = 1;
dr1["Name"] = "45";
dr1["Age"] = 91;
DataRow dr2 = dt2.NewRow();
dr2["ID"] = 2;
dr2["Name"] = "456";
dr2["Age"] = 92;
dt2.Rows.Add(dr1);
dt2.Rows.Add(dr2);
return dt2;
}