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 即为差异的数据表


  • 相关阅读:
    报错:java.lang.IllegalStateException
    Eclipse中修改SVN用户名和密码方法
    部署服务器项目报错
    mybatis的双数据源创建
    SVN改地址eclipse怎么同步
    java中文乱码问题解决
    python3 内置函数
    python 生成器generator
    python 理解高阶函数
    python3 装饰器
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1768384.html
Copyright © 2011-2022 走看看