因为deptsNew 要进行 Except 集合操作,所以当deptArr=null时,我要让deptsNew.count=0
通过deptsNew = deptsNew.Where(a => a.Id < 0),id是自增长。还有什么其他方法让deptsNew.count=0吗?
                    var deptsNew = db.Department.AsQueryable();
                    if (deptArr != null)                        //添加:用户-部门-权限树
                    {
                        deptsNew = deptsNew.Where(a => deptArr.Contains(a.Id));                                   //用户提交-集合
                    }
                    else
                    {
                        deptsNew = deptsNew.Where(a => a.Id < 0);
                        
                    }

解决方案 »

  1.   

    deptsNew = deptsNew.Where(a => a.Id < 0 or a.Id==null); 这样不可以吗?
      

  2.   

    可以直接判断deptArr 是否为null,如果为null,也无需Except ,直接返回集合
      

  3.   

    deptsNew = new Queryable()
      

  4.   


    因为下边有些代码:
            public static bool EditUser(RegisteredUsers user, int[] deptArr = null)
            {
                try
                {
                    using (var db = new WEBVODEntities())
                    {
                        var oldUser = db.RegisteredUsers.SingleOrDefault(a => a.Id == user.Id);
                        oldUser.RealName = user.RealName;
                        oldUser.RoleId = user.RoleId;
                        oldUser.DepartmentId = user.DepartmentId;
                        var deptsNew = db.Department.AsQueryable();
                        if (deptArr != null)                        //添加:用户-部门-权限树
                        {
                            deptsNew = deptsNew.Where(a => deptArr.Contains(a.Id));                                   //用户提交-集合
                        }
                        else
                        {
                            deptsNew = deptsNew.Where(a => a.Id < 0);
                            
                        }
                            var deptsOld = db.Manager.Where(a => a.LoginName == oldUser.LoginName).Select(a => a.Department);  //数据库-集合                        var deptsAdd = deptsNew.Except(deptsOld);//.ToList();                                                 //需要添加-集合
                            var deptsCut = deptsOld.Except(deptsNew);//.ToList();                                                 //需要删除集合                        foreach (var dept in deptsAdd)
                            {
                                Manager manager = new Manager();
                                manager.Department = dept;
                                manager.RegisteredUsers = oldUser;
                                manager.ManCreate = CurrentProject.GetCurrentUser().LoginName;
                                manager.TimeCreate = DateTime.Now;
                            }                        List<int> deptIdList = deptsCut.Select(a => a.Id).ToList();
                            var managersOld = db.Manager.Where(a => a.LoginName == oldUser.LoginName).Where(a => deptIdList.Contains(a.DeptId)).ToList();
                            foreach (var manager in managersOld)
                            {
                                db.Manager.DeleteObject(manager);
                            }
                        
                        db.SaveChanges();                    return true;
                    }
                }
                catch
                { 
                }            return false;            
            }
      

  5.   

    用一个永远为false的条件不就行了……
    deptsNew = deptsNew.Where(a => 1 == 2);  
      

  6.   


    这个不行错误 2 无法创建静态类“System.Linq.Queryable”的实例 F:\win2008iis\BYVOD\Models\RegisteredUserBLL.cs 103 36 BYVOD
      

  7.   


    这个不行错误 2 无法创建静态类“System.Linq.Queryable”的实例 F:\win2008iis\BYVOD\Models\RegisteredUserBLL.cs 103 36 BYVOD
    我这么写你别这么写啊。。我错了。。我的意思是要你根据db.Department的类型new一个新的序列。