gpt4 book ai didi

c# - 数据表,超越,加入

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:08 27 4
gpt4 key购买 nike

我有一个名为 sourceTable 的数据表,其中包含 source_Idtitleprogramme_Id 列。第二个数据表是 credits,包含 credit_Idprogramme_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;
}

最佳答案

它运行缓慢,因为您为源表中的每一行遍历了 credits 表中的所有行。您可以使用以下 linq 查询来连接两个表。

(from sourceRow in sourceTable.Rows.OfType<DataRow>()
join creditRow in credits.Rows.OfType<DataRow>()
on sourceRow.Field<int>("programme_Id") equals creditRow.Field<int>("programme_Id")
select new {sourceRow, creditRow})
.ForEach(o => o.sourceRow["credits_id"] = o.creditRow["sourceRow"]);

关于c# - 数据表,超越,加入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142337/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com