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

 

转载于:https://www.cnblogs.com/qinyi173/p/7089086.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值