1. 程式人生 > >關於Linq對DataTable和List各自的兩個集合篩選的相關操作技巧

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

linq per enume any rom opera 操作技巧 得到 數據集

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

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(); }

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