C# 如何基于null筛选列表

C# 如何基于null筛选列表,c#,.net,C#,.net,我有一个C#格式的项目列表。有些项为空,有些项不为空。 如何筛选列表以仅显示非空值 var countInstances = supervisor.SupervisedPlacements.Select(ps => ps.PlacementShift); 那么,如何从countInstances中仅获取非null的列表呢???只需使用Where删除nulls: var filtered = supervisor.SupervisedPlacements.Where(x => x

我有一个C#格式的项目列表。有些项为空,有些项不为空。 如何筛选列表以仅显示非空值

 var countInstances = supervisor.SupervisedPlacements.Select(ps => ps.PlacementShift);

那么,如何从countInstances中仅获取非null的列表呢???

只需使用
Where
删除
null
s:

var filtered = supervisor.SupervisedPlacements.Where(x => x != null);

var countInstances = filtered.Count();
编辑:我可能误解了。。这里有另一个选择(如果这是你的意思):


就像其他比较一样

(x => x.Foo != null)

尝试从
countInstances
中删除所有null

countInstances.RemoveAll(x => x == null);

但是这将对
countInstances

产生直接影响。在您的第一个示例中,
.ToList()
真的有必要吗?没有。我已经习惯了必须处理IQueryable的习惯:/n如果您正在使用IQueryable,那么不要执行
.ToList()
,这将是非常重要的!如果您这样做了,您将不得不通过网络传输整个结果集,以便在服务器可以轻松完成并传输单个
int
…的情况下对其进行计数,而我一周来一直在处理这些问题。。结果将被过滤。。因此,它们是不可改变的。这只是我几周工作的一个习惯。。不是经常发生的事。不过什么是福?我得到的结果是countInstances[0]=null,countInstances[1]=object,countInstances[2]=nullFoo可以是需要测试的任何属性,以确定是否将其包含在结果中,或者对象本身为(x=>x!=null)
countInstances.RemoveAll(x => x == null);