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

时间:2013-06-24 15:03:53

标签: c# linq lambda

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

它正在提供一些元素集合。

从这个系列中,我很喜欢 过滤基于One Column的数据但是没有给出 即使根据条件存在数据,也会过滤数据 查询如下所示。

对于获取数据表单数据库//它是 获取一些数据集。

IList<EFModel.EntityModel.vwGetActiveEmployee> activeEmployeelist = TimeOffService.GetActiveEmployees();

这里我想基于Column IsManger(值1或0)来存档数据 为此,我写了

IList<EFModel.EntityModel.vwGetActiveEmployee> managerlist = activeEmployeelist.Where(p => p.IsManager == 1).Select(p => p) as IList<EFModel.EntityModel.vwGetActiveEmployee>;

但是这里Managerlist显示空值。当我过滤数据 使用下面的

 var emplistVar = activeEmployeelist.Where(p => p.IsManager.Equals(1)).Select(p => p);

它显示了一些带有“var”类型的数据集合,但是如果我给出的话 类型显示为null。这是什么原因,这个数据是 取自数据库查看数据。

1 个答案:

答案 0 :(得分:6)

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

IList<EFModel.EntityModel.vwGetActiveEmployee> managerlist 
     = activeEmployeelist.Where(p => p.IsManager == 1)
                         .Select(p => p)
       as IList<EFModel.EntityModel.vwGetActiveEmployee>;

...将总是managerlist作为nullSelect在任何实施中都不会返回IList<T>我我见过。我怀疑你想要:

IList<vwGetActiveEmployee> managerlist =
    activeEmployeelist.Where(p => p.IsManager == 1)
                      .ToList();

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