zoukankan      html  css  js  c++  java
  • DataTabe(DataRow)之间比较求交集、并集、差集

    //首先要添加System.Data.DataSetExtensions;
    DataSet ds = new DataSet();
    ds.Locale 
    = CultureInfo.InvariantCulture;
    FillDataSet(ds);

    DataTable contactTable 
    = ds.Tables["Contact"];

    // Create two tables.
    IEnumerable<DataRow> query1 = from contact in contactTable.AsEnumerable()
                                  
    where contact.Field<string>("Title"== "Ms."
                                  select contact;

    IEnumerable
    <DataRow> query2 = from contact in contactTable.AsEnumerable()
                                  
    where contact.Field<string>("FirstName"== "Sandra"
                                  select contact;


    DataTable contacts1 
    = query1.CopyToDataTable();
    DataTable contacts2 
    = query2.CopyToDataTable();

    // Find the intersection of the two tables. 求交集用 Intersect/Union(并集)/Except(差集)
    var contacts = contacts1.AsEnumerable().Intersect(contacts2.AsEnumerable(),
                                                        DataRowComparer.Default);

    Console.WriteLine(
    "Intersection of contacts tables");
    foreach (DataRow row in contacts)
    {
        Console.WriteLine(
    "Id: {0} {1} {2} {3}",
            row[
    "ContactID"], row["Title"], row["FirstName"], row["LastName"]);
    }

     上面为MSDN的代码,下面为自己的代码,相对简洁些:

    DbHelperSQL.connectionString = strSiteConnection;
    DataTable dtblSiteTable 
    = DbHelperSQL.TQuery("Select * From " + strTableName);
    IEnumerable
    <DataRow> querySite = from contact in dtblSiteTable.AsEnumerable() select contact;

    DbHelperSQL.connectionString 
    = strMainConnection;
    DataTable dtblMainTable 
    = DbHelperSQL.TQuery("Select * From " + strTableName);
    IEnumerable
    <DataRow> queryMain = from contact in dtblMainTable.AsEnumerable() select contact;

    var EnumerableExcept 
    = querySite.CopyToDataTable().AsEnumerable().Except(queryMain.CopyToDataTable().AsEnumerable(), DataRowComparer.Default);
     
    DataTable dtblExcept 
    = EnumerableExcept.CopyToDataTable();  //dtblExcept 即为差异的数据表


  • 相关阅读:
    MATLAB计算机视觉与深度学习实战
    硬件创业:从产品创意到成熟企业的成功路线图
    Xcode5 创建模板和UIView 关联XIB
    iOS Development: Proper Use of initWithNibName:bundle: Affects UITableViewController
    自定义UIViewController与xib文件关系深入分析
    UIViewController XIB/NIB加载过程
    ios多视图开发中:xib与UIViewController的关联
    UIAlertView、UIActionSheet兼容iOS8
    Xcode6中怎么添加空工程模板
    [OC Foundation框架
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1768384.html
Copyright © 2011-2022 走看看