Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何比较两个dataTable并更新dataTable中提供resultDataTable的不匹配行? 主数据_C#_Asp.net - Fatal编程技术网

C# 如何比较两个dataTable并更新dataTable中提供resultDataTable的不匹配行? 主数据

C# 如何比较两个dataTable并更新dataTable中提供resultDataTable的不匹配行? 主数据,c#,asp.net,C#,Asp.net,身份证名称 中环1号 2东区 东中环3号 4东海岸 5北 6西北 7南部 8中南部 9西 已收数据 Id名称值 中环1号125.65 5北553.21 我希望结果如下 Id名称值 中环1号125.65 2东0.0 3东中环0.0 4东海岸0.0 5北553.21 6西北0.0 7南方0.0 8中南部0.0 9西0.0 请注意,所有数据表都是Datatable。我如何才能得到结果呢 var dt1 = new DataTable(); dt1.Colu

身份证名称
中环1号
2东区
东中环3号
4东海岸
5北
6西北

7南部

8中南部

9西

已收数据 Id名称值
中环1号125.65
5北553.21

我希望结果如下 Id名称值
中环1号125.65
2东0.0
3东中环0.0
4东海岸0.0
5北553.21
6西北0.0
7南方0.0
8中南部0.0
9西0.0


请注意,所有数据表都是Datatable。我如何才能得到结果呢

var dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("Id", typeof(int)));
dt1.Columns.Add(new DataColumn("Name", typeof(string)));

var dt2 = new DataTable();
dt2.Columns.Add(new DataColumn("Id", typeof(int)));
dt2.Columns.Add(new DataColumn("Name", typeof(string)));
dt2.Columns.Add(new DataColumn("Value", typeof(double)));
您可以加入它,并通过LINQ to对象获得所需:

var query = from r1 in dt1.AsEnumerable()
            join r2 in dt2.AsEnumerable() on r1.Field<int>("Id") equals r2.Field<int>("Id") into r3
            from r4 in r3.DefaultIfEmpty()
            select new
            {
                Id = r1.Field<int>("Id"),
                Name = r1.Field<string>("Name"),
                Value = r4 == null ? 0.00 : r4.Field<double>("Value")
            };
您可以使用以下语句从
query
获取
DataTable

var result = query.ToDataTable();

请多读几遍。。请很好的格式化技巧,很难阅读。
Id
是两个表中的主键吗?@SonerGönül我必须知道,如何在评论中创建链接?:)@SonerGönül太棒了!(我尝试了与问答相同的方法,这似乎很棘手:))。谢谢感谢它的工作良好,但还有一件事,我得到了'Value'的ColumnName动态,我将在Select new中传递应该是ColumnName的参数,我想要该ColumnName您可以在末尾将column设置为另一个值。无法在select中执行此操作,因为所有匿名类型属性名称都必须在编译时已知。感谢回复,在获得结果后,我将DataColumn Name.更改为我想要的任何名称。对不起,我的格式化技术不好。
var result = query.ToDataTable();