zoukankan      html  css  js  c++  java
  • Linq表达式理解错误

    var userInfo = UserInfoService.LoadEntities(u=>u.ID==LoginUser.ID).FirstOrDefault();
                //获取登录用户的角色.
    var userRoleInfo = userInfo.RoleInfo;
    
    //Linq表达式一:
    var loginUserMenuActions = (from r in userRoleInfo
                                                from a in r.ActionInfo
                                                where a.ActionTypeEnum == actionTypeEnum
                                                select a).ToList();
    
    //Linq表达式二:
    var allUserActions = from r in userRoleInfo
                                    select r.ActionInfo;
    var mm = (from a in allUserActions
                      where a.ActionTypeEnum == actionTypeEnum
                      select a).ToList();
    
    //Linq表达式二是错误的,因为执行这句where a.ActionTypeEnum == actionTypeEnum的时候,allUserActions是一个大集合里面包含很多小集合,所以遍历allUserActions得到变量a是一个集合。一个集合里面没有ActionTypeEnum这个属性,所以a.ActionTypeEnum是错误的。
    
    //但是Linq表达式一是对的,因为两个from相当于两次for循环,所以a不是一个集合,是一个ActionInfo
    

      总结:注意Linq语句from的使用,如果是集合要小心,from一次然后select得到的可能是一个集合中包着许多集合,这时候要from两次,类似for循环两遍

  • 相关阅读:
    npm执行清理缓存失败npm cache clean
    Vue中计算属性(computed)和监听属性函数watch的比较
    vue生命周期函数
    vue自定义指令
    vue 自定义过滤器
    vue 自定义全局按键修饰符
    线性回归模型
    python常用模块
    KNN算法的实现
    python集合(set)的运算
  • 原文地址:https://www.cnblogs.com/BOSET/p/7040058.html
Copyright © 2011-2022 走看看