【问题标题】:How to union two data tables and order the result如何合并两个数据表并对结果进行排序
【发布时间】:2012-01-03 10:36:30
【问题描述】:

问:如果我有两个这样的数据表:

Dt1(emp_num,emp_name,type)

Dt2(emp_num,emp_name,type)

我想联合他们并通过emp_name订购结果。

【问题讨论】:

    标签: c# asp.net linq datatable union


    【解决方案1】:
    var dt1 = new DataTable(); // Replace with Dt1
    var dt2 = new DataTable(); // Replace with Dt2
    
    var result = dt1.AsEnumerable()
                .Union(dt2.AsEnumerable())
                .OrderBy (d => d.Field<string>("emp_name"));
    

    【讨论】:

    • 很好的答案,你帮了我很多(+1),但它缺少一件事。如果希望结果是 DataTable:retium result.CopyToDataTable();
    • 那是因为它在问题中缺少该要求。
    • 问题:这个 UNION 有区别吗?如果不是,我怎样才能使行 DISTINCT?
    • Distinct 是一个单独的操作。为此,您可以使用 .Distinct() 扩展方法。
    【解决方案2】:

    我认为这段代码将帮助你在不使用实体的情况下做到这一点......

    Dt1.Merge(Dt2);
    

    【讨论】:

    • 它按预期工作。如果你没有在基表上设置任何主键(在上面的例子中,Dt1),那么合并就像'UNION ALL'一样工作。这意味着如果要合并的基表和表中存在具有相同列值的行,则合并后这两行都将存在于基表中。但是如果在基表上设置了主键,那么只有那些根据主键在基表中不存在的行才会被添加到基表中。因此,如果在基表上设置了主键,则不会重复。
    猜你喜欢
    • 2022-10-04
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2014-05-18
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多