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


  • 相关阅读:
    341. Flatten Nested List Iterator
    667. Beautiful Arrangement II
    953. Verifying an Alien Dictionary
    1704. Determine if String Halves Are Alike
    MySQL数据库的数据类型详解【转】
    Dart之数组(List)的相关方法总结【转】
    Flutter解决点击非输入框时关闭键盘问题及TextFormField焦点切换问题【转】
    Flutter Switch开关【转】
    Image Picker
    Flutter按钮添加背景图片及文字【转】
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1768384.html
Copyright © 2011-2022 走看看