c# - 连接两个数据表并将结果保存在数据表中
问题描述
我有 2 个数据集,我想加入两个数据集并将结果保存在数据表中。
我能够加入表格,但是在将结果保存在数据表中时,它会引发错误 “无法转换类型为 d__38 4[System.Data.DataRow,System.Data.DataRow,System.String,<>f__AnonymousType0 7[ 的对象System.String,System.String,System.Int32,System.Int32,System.String,System.String,System.String]]' 输入'System.Data.DataTable'
我的代码:
private DataSet joindatasets(DataSet ds1, DataSet dsHeader)
{
DataTable dt;
DataSet ds = new DataSet();
DataTable dt1=new DataTable();
dt1.Columns.Add("PracticeCode", typeof(string));
dt1.Columns.Add("PracticeName", typeof(string));
dt1.Columns.Add("High", typeof(int));
dt1.Columns.Add("Medium", typeof(int));
dt1.Columns.Add("username", typeof(string));
dt1.Columns.Add("MIAlertHeader", typeof(string));
dt1.Columns.Add("MIAlertFooter", typeof(string));
if (dsHeader.Tables.Count > 0)
{
for (int i = 0; i <= dsHeader.Tables.Count - 1; i++)
{
dt = dsHeader.Tables[i];
var query = from table1 in ds1.Tables[0].AsEnumerable()
join table2 in dt.AsEnumerable()
on (string)table1["PracticeCode"] equals (string)table2["PracticeCode"]
select new
{
PracticeCode = (string)table1["PracticeCode"],
PracticeName = (string)table1["PracticeName"],
High = (int)table1["High"],
Medium = (int)table1["Medium"],
username = (string)table2["username"],
MIAlertHeader = (string)table2["MIAlertHeader"],
MIAlertFooter = (string)table2["MIAlertFooter"]
};
dt1 = (DataTable)query;
}
}
return ds;
}
请帮忙
解决方案
当您尝试转换IEnumerable<object>
为DataRow
. 要解决此问题,您必须使用DataTable.LoadDataRow 方法+ CopyToDataTable 方法
dt1 = (from table1 in ds1.Tables[0].AsEnumerable()
join table2 in dt.AsEnumerable()
on (string)table1["PracticeCode"] equals (string)table2["PracticeCode"]
select dt1.LoadDataRow(new object[]
{
(string)table1["PracticeCode"],
(string)table1["PracticeName"],
(int)table1["High"],
(int)table1["Medium"],
(string)table2["username"],
(string)table2["MIAlertHeader"],
(string)table2["MIAlertFooter"]
}, false)).CopyToDataTable();
更多详细信息,您可以在此处找到:从查询创建数据表 (LINQ to DataSet)
推荐阅读
- google-cloud-platform - 将实例从美国移动到欧洲
- javascript - Reactjs - 通过按钮更改随机数组中的项目
- python-3.x - 如何将带有文件和参数的python3发布请求转换为curl
- android-studio - 如何在 android studio 中设置 2 个 android 模拟器来测试反应原生应用程序
- amazon-web-services - 对二级索引 (GSI) 进行 DynamoDB 扫描
- git - Git 已安装,但 .git 目录不存在,所以我无法配置它
- pandas - 想要删除 panda 中的列,但如果列已经存在,则不应显示错误
- mongodb - 我需要在 mongoDb 中附加聚合结果,其中包含不同列的平均值和总和
- django - Django 上传多个文件
- ios - 当用户在 iOS 设备上向下滑动通知中心屏幕时,UIApplication.didBecomeActiveNotification 被意外调用一次