【问题标题】:How to recognize a datatable as a part of another datatable?如何将数据表识别为另一个数据表的一部分?
【发布时间】:2015-11-02 06:20:13
【问题描述】:

如何做到这一点:

我有两个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

【问题讨论】:

  • 您能否添加一些示例输入\输出以使其更清晰?

标签: c# asp.net linq datatable


【解决方案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.

【讨论】:

    【解决方案2】:

    您可以使用Contains 运算符。伪代码如下(未经测试,可能有一些错别字):

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

    【讨论】:

    • 我想在同一个数据表中识别它们 DT_All 不是结果
    • 好的,然后描述一下“在同一个数据表中识别它们”是什么意思
    • 我的意思是当观看DT_ALL 本身时,我可以通过标志或其他方式识别交叉点
    • 嗯也许添加一个带有这个标志的列并在获取数据表的数据时填充它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    相关资源
    最近更新 更多