我有一群人,我需要过滤掉#34; status" property为null。
Person p = (from p in house.People where p.status == null)
如何从状态为null的集合中获取此人? 感谢
答案 0 :(得分:2)
如果您只期望一个状态为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();
最后,如果有多个人的状态为Single
,则可以使用SingleOrDefault
/ null
如果是错误的话。然后会抛出InvalidOperationException
。
答案 1 :(得分:1)
该集合有可能有多个符合您条件的项目,因此您通常希望获得整个匹配集并循环遍历它。
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();
答案 2 :(得分:1)
试试这个:
var person = house.People.FirstOrDefault(x=>x.status==null)
答案 3 :(得分:1)
您只能使用First
返回一个结果:
Person p = house.People.First(p => p.status == null);
如果没有找到任何元素,这将抛出异常。如果您想避免这种情况,请返回null
而不是FirstOrDefault
。如果您只想要一个元素,那么您也可以使用Single
或SingleOrDefault
,如果找到多个元素,则会抛出异常。