码迷,mamicode.com
首页 > 其他好文 > 详细

Linq表达式理解错误

时间:2017-06-17 14:21:02      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:uac   action   用户   list   div   menu   角色   default   sharp   

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表达式理解错误

标签:uac   action   用户   list   div   menu   角色   default   sharp   

原文地址:http://www.cnblogs.com/BOSET/p/7040058.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!