C# 是否可能使用';foreach&x27;循环以进行条件检查?
如果我有一个C# 是否可能使用';foreach&x27;循环以进行条件检查?,c#,foreach,C#,Foreach,如果我有一个foreach循环,有没有办法也检查布尔值 例如,我不想在foreach()中检查一次,然后中断。我想对一个集合进行foreach,同时评估某个集合是否正确 例如,我不想做: IEnumerable<Job> jobs = currentJobs; foreach(Job job in jobs) { if (found) break; } IEnumerable作业=当前作业; foreach
foreach
循环,有没有办法也检查布尔值
例如,我不想在foreach()
中检查一次,然后中断。我想对一个集合进行foreach
,同时评估某个集合是否正确
例如,我不想做:
IEnumerable<Job> jobs = currentJobs;
foreach(Job job in jobs)
{
if (found)
break;
}
IEnumerable作业=当前作业;
foreach(作业中的作业)
{
如果(找到)
打破
}
您可以随时将其转换为for循环
for (i = 0; i < jobs.Count && booleanTrue; i++) {
// do a lot of great stuff
}
for(i=0;i
您还需要将作业从
IEnumerable
更改为IList
。我认为IList将更好地满足您的需求IEnumerable
lazy在需要元素之前对元素进行求值,不包括关联的集合帮助程序方法。不,foreach只对每个元素有效
您可以在(a;b;c)循环的常规
中组合多个条件。就像(a;b&x;c)的
不是很喜欢它,但可能是一些LINQ
bool yourBool = false;
foreach(var item in
collection.TakeWhile(x => yourBool))
{...}
?尝试使用
从示例中可以看出:
string[] fruits = { "apple", "banana", "mango", "orange",
"passionfruit", "grape" };
IEnumerable<string> query =
fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
/*
This code produces the following output:
apple
banana
mango
*/
string[]水果={“苹果”、“香蕉”、“芒果”、“橙子”,
“西番莲”、“葡萄”};
IEnumerable查询=
水果.TakeWhile(水果=>String.Compare(“橙色”,水果,真)!=0);
foreach(查询中的字符串)
{
控制台。书写线(水果);
}
/*
此代码生成以下输出:
苹果
香蕉
芒果
*/
我是否正确理解您
有一系列的元素
要对每个元素采取一些操作吗
但是你想在你遇到的第一个元素上突破,这个元素的某些条件是真的吗
我不理解使用foreach
循环的阻力;我要么坚持你所拥有的,要么
foreach(var job in jobs.TakeWhile(x => someCondition(x)) {
someAction(job);
}
我找到了另一种方法:
foreach (var car in cars) if (!rentedCars.Contains(car))
{
// Magic
}
你能举个例子吗?我对你的意思有点模糊…这意味着其他人可能也很困惑。你能提供更多的细节和/或例子吗?你的意思是类似于foreach(MyList中的var项。Where(condition))您意识到,无论布尔求值是循环声明的一部分,还是在循环开始时中断的if
语句,它们在功能上都是相同的,对吗?对。我很清楚你不想做什么。我不知道您想做什么。这模拟了一个继续,而不是中断。@Henk-公平地说,在添加示例之前,意图是不明确的。只有在集合提供了Count
属性(并且可能还提供了一个索引器,因为“做了很多很棒的事情”之后)时,您才能这样做可能需要通过索引访问元素)。问题中的例子使用的是IEnumerable
,而这两者都没有。啊,好的。当我回答时,他并没有张贴那个例子。我已经确定了答案。我想这应该是答案。这就是我要找的。谢谢注意,这只是单语句控制流;i、 例如,只有一个嵌套在foreach
中的if
语句,没有括号