關於Linq對DataTable和List各自的兩個集合篩選的相關操作技巧


項目中用到了對兩個集合的帥選等操作,簡單總結下

1.Linq操作多個Datable

  可以通過AsEnumerable()方法對DataTable進行Linq操作

//獲取數據表所有數據
 DataTable allJDt = GetDbDataTable(m_DBFile, "select * from 監測點");
//所有插入的數據
            DataTable jAddDt =
                dt.AsEnumerable()
                    .Where(n => n.Field<string>("TableName") == "監測點")
                    .Where(m => m.Field<string>("Operation") == "Insert")
                    .AsEnumerable();
 //根據主鍵帥選所有插入的數據
            DataTable jcaddDt =
                allJDt.AsEnumerable()
                    .Where(
                        x =>
                            jAddDt.AsEnumerable()
                                .Select(a => a.Field<string>("KeyFld"))
                                .Any(a => x.Field<string>("Name").Contains(a)));
//篩選表所有修改的數據(差集)
         DataTable    DjcModifyDt = allJDt.AsEnumerable().Except(jcaddDt.AsEnumerable());

2.Linq操作多個List

得到一組List主鍵,根據這個主鍵集合帥選出滿足條件的數據集合。

//所有數據
 List<sys_Right_Navigation> rlistList =GetAllList();
//跟據組GroupID條件獲取所有的主鍵
 List<int> gMist = rlistList .Where(n => n.GroupID == gID).Select(a => a.ModuleID).ToList();
 //這組的所有模塊id
                    if (gMist.Count() > 0)
                    {
                       //根據主鍵list帥選滿足條件的集合
                        rlistList = rlistList .Where(x => gMist.Any(p => p == x.ModuleID)).ToList();
                    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM