Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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# 如何将一个数据表识别为另一个数据表的一部分?_C#_Asp.net_Linq_Datatable - Fatal编程技术网

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
本身时,我可以通过标志或其他方式识别交叉点。嗯,在获取数据表的数据时,可以添加一个带有此标志的列并填充它。您可以添加一些示例输入\输出以使其更清晰吗?