List Collection过滤使用Where条件给出null值

V G*_*idu 1 c# linq lambda

我使用EDM查询作为IList类型从DataBase View Table获取值.

它给了一些元素集合.

从这个集合中,我想基于One Column过滤数据,但即使根据条件存在数据也不提供过滤数据查询如下所示.

对于从DataBase获取数据//它正在获取一些数据集合.

IList<EFModel.EntityModel.vwGetActiveEmployee> activeEmployeelist = TimeOffService.GetActiveEmployees();
Run Code Online (Sandbox Code Playgroud)

在这里,我想基于Column IsManger(值1或0)来存档数据.对于我写的那样

IList<EFModel.EntityModel.vwGetActiveEmployee> managerlist = activeEmployeelist.Where(p => p.IsManager == 1).Select(p => p) as IList<EFModel.EntityModel.vwGetActiveEmployee>;
Run Code Online (Sandbox Code Playgroud)

但这里的Managerlist显示空值.当我使用以下过滤数据

 var emplistVar = activeEmployeelist.Where(p => p.IsManager.Equals(1)).Select(p => p);
Run Code Online (Sandbox Code Playgroud)

它显示了一些带有"var"类型的数据集合,但如果我给它类型它显示为null.这是什么原因,这个数据来自数据库视图数据.

Jon*_*eet 6

此代码(重新格式化以避免滚动):

IList<EFModel.EntityModel.vwGetActiveEmployee> managerlist 
     = activeEmployeelist.Where(p => p.IsManager == 1)
                         .Select(p => p)
       as IList<EFModel.EntityModel.vwGetActiveEmployee>;
Run Code Online (Sandbox Code Playgroud)

... 总是会给出managerlist一个null,因为在我见过的任何实现中Select都没有返回IList<T>.我怀疑你想要:

IList<vwGetActiveEmployee> managerlist =
    activeEmployeelist.Where(p => p.IsManager == 1)
                      .ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,除非您故意执行可以有效失败的引用类型转换(在这种情况下您通常应该检查结果null),否则您应该更喜欢使用强制转换而不是as.如果你在这里使用了一个强制转换,你会立即看到异常,因为返回的值Select不是你期望的类型.