如何将数据表识别为另一个数据表的一部分?

时间:2015-08-10 11:00:23

标签: c# asp.net linq datatable

如何做到这一点:

我有两个datatables

  

FIRST:DT_All --->由emp_num,......其他列

组成      

SECOND:DT_Part --->由一列作为键emp_num组成

其中DT_part可能是DT_ALL的一部分,或者在此数据表中不存在。

如果它是DT_All

的一部分

我想要一种方法来识别它们DT_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

DT_part

   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

2 个答案:

答案 0 :(得分:1)

您可以在这两个表上执行left join: -

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
              };

Working Fiddle

答案 1 :(得分:0)

您可以使用Contains运算符。下面的伪代码(未经测试,可能会出现一些拼写错误):

var items = DT_All
                .AsEnumerable()
                .Where(x => DT_Part.Field<string>("emp_num").Contains(x.EmpNum));