C# 如何将一个数据表识别为另一个数据表的一部分?
如何做到这一点: 我有两个C# 如何将一个数据表识别为另一个数据表的一部分?,c#,asp.net,linq,datatable,C#,Asp.net,Linq,Datatable,如何做到这一点: 我有两个数据表: 第一列:DT_All-->由以下列组成:emp_num,…其他列 第二:dtu部分-->由一列作为键组成emp\u num 其中,dtu部分可能是dtu全部的一部分,也可能不存在于该数据表中 如果它是DT\u All的一部分 emp_num column1 column2 column3 227 7 33.3 ss 155 5 10.7 mm 122 5
数据表
:
第一列:DT_All
-->由以下列组成:emp_num
,…其他列
第二:dtu部分
-->由一列作为键组成emp\u num
其中,
dtu部分
可能是dtu全部
的一部分,也可能不存在于该数据表中
如果它是DT\u All的一部分
emp_num column1 column2 column3
227 7 33.3 ss
155 5 10.7 mm
122 5 1.66 aa
678 2 8.9 rr
555 1 1.11 aa
我想要一种在DT\u ALL
中识别它们的方法。如何简单快速地做到这一点
例如:
DT_All
emp_num column1 column2 column3
227 7 33.3 ss
155 5 10.7 mm
122 5 1.66 aa
678 2 8.9 rr
555 1 1.11 aa
dtu部分
:
emp_num
155
678
我想要这样的输出:
emp_num column1 column2 column3 flag
227 7 33.3 ss 0
155 5 10.7 mm 1
122 5 1.66 aa 0
678 2 8.9 rr 1
555 1 1.11 aa 0
您可以使用
Contains
运算符。下面的伪代码(未测试,可能会出现一些拼写错误):
var items=DT\u All
.可计算的()
其中(x=>DT_部分字段(“emp_num”)包含(x.EmpNum));
您可以在两个表上执行左联接
,如下所示:-
var result = from t1 in dt1.AsEnumerable()
join t2 in dt2.AsEnumerable()
on t1.Field<int>("emp_num") equals t2.Field<int>("emp_num") into g
from foo in g.DefaultIfEmpty()
select new
{
emp_num = t1.Field<int>("emp_num"),
col1 = t1.Field<string>("col1"),
flag = foo != null ? 1 : 0
};
var result=来自dt1.AsEnumerable()中的t1
将t2连接到dt2.AsEnumerable()中
在t1上,字段(“emp_num”)等于t2。字段(“emp_num”)转换为g
来自g.DefaultIfEmpty()中的foo
选择新的
{
emp_num=t1.字段(“emp_num”),
col1=t1.字段(“col1”),
flag=foo!=null?1:0
};
.我想在同一个数据表中识别它们
DT_All
而不是作为结果,那么请描述一下“在同一个数据表中识别它们”是什么意思我的意思是,当观看DT_ALL
本身时,我可以通过标志或其他方式识别交叉点。嗯,在获取数据表的数据时,可以添加一个带有此标志的列并填充它。您可以添加一些示例输入\输出以使其更清晰吗?