我使用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.这是什么原因,这个数据来自数据库视图数据.
此代码(重新格式化以避免滚动):
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
不是你期望的类型.