Linq表达式理解错误
Posted BoSet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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表达式理解错误的主要内容,如果未能解决你的问题,请参考以下文章
.NET Core 3.1 中的 Linq 表达式 GroupBy 错误