項目中用到了對兩個集合的帥選等操作,簡單總結下 1.Linq操作多個Datable 可以通過AsEnumerable()方法對DataTable進行Linq操作 2.Linq操作多個List 得到一組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(); }