繁体   English   中英

来自集合C#的Linq过滤器

[英]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 如果期望恰好一个元素,则也可以使用SingleSingleOrDefault ,如果找到一个以上的元素,则将引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM