我想知道在C#
中是否可以创建一个带有where循环的foreach循环。不是用if语句,而是在声明循环时使用where子句。
像这样的东西可能可以吗?
foreach(var n in people where n.sex == male)
{
}
是的,这是可能的:
方法语法:
foreach (var person in people.Where(n => n.sex == "male"))
{
}
或者相对冗长的查询语法:
foreach (var person in from person in people where person.sex == "male" select person)
foreach (var person in from i in people where i.sex == "male" select i) { ... }
(并不是说这种方式更好,只是列举一种可能性。) - cdhowie正如Yuval的回答及其评论所指出的那样,您可以将任何查询(无论是“流畅”还是“查询语法”形式)放在集合表达式中。这会导致尴尬的结构,比如:
foreach(var person in from person in people where person.sex == male select person)
看起来你需要一个lambda表达式来限制foreach循环处理的项。
根据你提供的有限示例,可以像这样:
foreach(var n in people.Where(n => n.sex == male))
{
}
foreach(var n in people.Where(p=>p.sex == male))
呢? - Vojtěch Dohnal