[英]Linq filter from Collection C#
我有一个People集合,我需要过滤掉“ status”属性为null的位置。
Person p = (from p in house.People where p.status == null)
我如何才能从状态为空的集合中获取该人? 谢谢
如果只希望一个人的状态为null
,则可以使用First
/ FirstOrDefault
:
Person p = (from p in house.People where p.status == null).FirstOrDefault();
或方法语法中
Person nullStatusPerson = house.People.FirstOrDefault(p => p.status == null);
这将是null
,如果没有人该状态为null
。
如果要让所有人的状态为null
,则可以创建一个集合:
List<Person> nullStatusPersons = house.People.Where(p => p.status == null).ToList();
最后,如果一个或多个Person的状态为null
,则可以使用Single
/ SingleOrDefault
作为错误。 然后它将引发InvalidOperationException
。
集合中可能有不止一项符合您的条件的项目,因此您通常希望获取整个匹配项并在其上循环。
List<Person>
将适合保存匹配的实例:
List<Person> p = (from p in house.People where p.status == null).ToList();
如果您真的希望得到一个,请获得第一项:
Person p = (from p in house.People where p.status == null).FirstOrDefault();
尝试这个:
var person = house.People.FirstOrDefault(x=>x.status==null)
您只能使用First
返回一个结果:
Person p = house.People.First(p => p.status == null);
如果未找到任何元素,则将引发异常。 如果要避免这种情况并返回null
使用FirstOrDefault
。 如果期望恰好一个元素,则也可以使用Single
或SingleOrDefault
,如果找到一个以上的元素,则将引发异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.