zoukankan      html  css  js  c++  java
  • 关于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();
                        }
  • 相关阅读:
    Oracle 分析函数
    Oracle 增加修改删除字段
    Oracle 重置序列
    End2EndIT
    Hyperledger Fabric SDK use case 1
    云计算中8项核心技术
    Cloud
    JVM Guide
    微信公众平台PHP开发
    在Linux系统环境下修改MySQL的root密码
  • 原文地址:https://www.cnblogs.com/qinyi173/p/7089086.html
Copyright © 2011-2022 走看看