首页 > 代码库 > Linq表达式理解错误
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循环两遍
Linq表达式理解错误
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。