Linq表達式理解錯誤
阿新 • • 發佈:2017-06-17
屬性 表達 gin list() ole in use 如果 light enum
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表達式理解錯誤