我有一个包含三个表的数据集。我想比较一个表中的列项目与另外两个列项目,但要做到这一点我使用嵌套的foreach循环。代码返回的方式多于应有的数据,所以我有一种感觉我搞砸了;我也确信有一个更好的/更清洁的方式来做到这一点,随时让我知道。多表数据集比较列数据
foreach (DataRow row in dataSet.Tables["Taxonomy"].Rows)
{
var projectTypes = row["ProjectType"].ToString();
var tier3 = row["Tier3Project"].ToString();
if (tier3.Equals(""))
tier3 = "null";
Console.WriteLine(projectTypes);
foreach (DataRow dRow in dataSet.Tables["DefaultEventTypes"].Rows)
{
var name = dRow["name"].ToString();
if (name.Equals(""))
name = "null";
/****** Begin Comparisons ******/
if (projectTypes.Trim().ToLower().Equals(name.Trim().ToLower()))
{
foreach (DataRow sRow in dataSet.Tables["ScheduleEvents"].Rows)
{
var nameShort = sRow["nameShort"].ToString();
/****** Compare to ScheduleEvent ******/
if (projectTypes.Trim().ToLower().Equals(nameShort.Trim().ToLower()))
{
//Update both DefaultEventType and ScheduleEvent
Console.WriteLine(projectTypes + " " + name + " " + tier3);
counter++;
}
else
{
}
}
}
else
{
foreach (DataRow sRow in dataSet.Tables["ScheduleEvents"].Rows)
{
var nameShort = sRow["nameShort"].ToString();
/****** Compare to ScheduleEvent ******/
if (projectTypes.Trim().ToLower().Equals(nameShort.Trim().ToLower()))
{
//Update ScheduleEvent
}
}
}
/****** End Comparisons ******/
}
}
我可以澄清是否需要,谢谢!
编辑:
我想从表“分类”拉一个项目,然后在表“DefaultEventTypes”比较它的每一行。如果有匹配,我就想把'Taxonomy'项目与'ScheduleEvent'中的每一行进行比较。
最后,我想添加更新语句来将匹配项更改为新名称并将表保存回数据库。
它似乎在做比较,但它返回的值的数量太大了。
使用Linq DataTable,它是更清洁和易于比较 - http://msdn.microsoft.com/en-us/library/bb386998.aspx –