gpt4 book ai didi

c# - 如何选择 LINQ 数据表连接中的所有列?

转载 作者:行者123 更新时间:2023-11-30 14:47:46 24 4
gpt4 key购买 nike

var collection = from t1 in dt1.AsEnumerable()
join t2 in dt2.AsEnumerable()
on t1["id"] equals t2["id"]
select new { Name = t1["name"], Group = t2["group"] };

我想选择两个表的所有列,就像在 SQL Server 内连接查询中连接一样。

此外如何将两个表的全部结果转换为数据表?

最佳答案

var collection = from t1 in dt1.AsEnumerable()
join t2 in dt2.AsEnumerable()
on t1["id"] equals t2["id"]
select new { T1 = t1, T2 = t2 };

然后...

编辑:

类似的东西

//clone dt1, copies all the columns to newTable 
DataTable newTable = dt1.Clone();

//copies all the columns from dt2 to newTable
foreach(var c in dt2.Columns)
newTable.Columns.Add(c);

//now newTable has all the columns from the original tables combined

//iterates over collection
foreach (var item in collection) {
//creates newRow from newTable
DataRow newRow = newTable.NewRow();
//iterate the columns, gets values from either original table if column name is there
foreach(var c in newTable.Columns)
newRow[c.ColumnName] = item.T1.ContainsColumn(c.ColumnName) ? item.T1[c.ColumnName] : item.T2[c.ColumnName];
newTable.Rows.Add(newRow);
}

这会起作用。但是,如果 dt1 和 dt2 共享具有完全相同名称的多个列,您可能会丢失一些数据。

关于c# - 如何选择 LINQ 数据表连接中的所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43510455/

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