项目中用到了对两个集合的帅选等操作,简单总结下
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(); }