【发布时间】:2012-04-13 14:05:06
【问题描述】:
我有一个名为sourceTable 的数据表,其中包含source_Id、title 和programme_Id 列。第二个数据表是credits,列credit_Id、programme_Id。所有列都是 Int 类型而不是列标题。
数据表credits中的列programme_Id是来自数据表sourceTable的外键
我想要实现的是从数据表credits 中使用列credit_Id 超过表sourceTable。
我写了一个有效的代码,但是很慢,有没有更好的方法!,如果没有我正在寻找的项目,FirstOrDefault 将输入 0,对于这种情况,也许会更好地返回 null 值而不是 0
sourceTable.columns.Add("credits_Id");
var rowColl = credits.AsEnumerable();
foreach (DataRow row in sourceTable.Rows)
{
var credits_Id =
(from r in rowColl
where r.Field<int>("programme_Id") == Convert.ToInt32(row["programme_Id"].ToString())
select r.Field<int>("credits_Id")).FirstOrDefault<int>();
row["credits_Id"] = credits_Id;
}
【问题讨论】:
-
两个数据表都有一些从 xml 文档中填充的内容
-
我认为你不需要在 Convert.ToInt32(row["programme_Id"].ToString() 中转换成 ToString()
-
它有点帮助(一分钟:),我有点麻烦,因为有很多行
标签: c# visual-studio-2010 linq