Steven Zack
Steven Zack

Reputation: 5104

How do I jump out of a foreach loop in C#?

How do I break out of a foreach loop in C# if one of the elements meets the requirement?

For example:

foreach(string s in sList){
      if(s.equals("ok")){
       //jump foreach loop and return true
     }
    //no item equals to "ok" then return false
}

Upvotes: 182

Views: 431905

Answers (12)

dynamichael
dynamichael

Reputation: 853

Use the 'break' statement to break out of a foreach loop.

Upvotes: 11

Dave Hampel
Dave Hampel

Reputation: 168

this is an old question but just thought I would add this answer

you could also use a While loop like this

string sample = "";
while(sample == "")
{
    foreach(DataRow row in DataTable.Rows
        sample = row["somecolumn"].ToString();
}

once the string 'sample' no longer = "" the loop will end

Upvotes: -3

Dan Olesen
Dan Olesen

Reputation: 31

how about:

return(sList.Contains("ok"));

That should do the trick if all you want to do is check for an "ok" and return the answer ...

Upvotes: 3

johnny craig
johnny craig

Reputation: 13

var ind=0;
foreach(string s in sList){
    if(s.equals("ok")){
        return true;
    }
    ind++;
}
if (ind==sList.length){
    return false;
}

Upvotes: -4

Can Gencer
Can Gencer

Reputation: 8885

It's not a direct answer to your question but there is a much easier way to do what you want. If you are using .NET 3.5 or later, at least. It is called Enumerable.Contains

bool found = sList.Contains("ok");

Upvotes: 1

mbillard
mbillard

Reputation: 38842

foreach (string s in sList)
{
    if (s.equals("ok"))
        return true;
}

return false;

Alternatively, if you need to do some other things after you've found the item:

bool found = false;
foreach (string s in sList)
{
    if (s.equals("ok"))
    {
        found = true;
        break; // get out of the loop
    }
}

// do stuff

return found;

Upvotes: 320

Cody
Cody

Reputation: 3764

foreach (var item in listOfItems) {
  if (condition_is_met)
    // Any processing you may need to complete here...
    break; // return true; also works if you're looking to
           // completely exit this function.
}

Should do the trick. The break statement will just end the execution of the loop, while the return statement will obviously terminate the entire function. Judging from your question you may want to use the return true; statement.

Upvotes: 38

Graham Clark
Graham Clark

Reputation: 12966

Either return straight out of the loop:

foreach(string s in sList){
   if(s.equals("ok")){
      return true;
   }
}

// if you haven't returned by now, no items are "ok"
return false;

Or use break:

bool isOk = false;
foreach(string s in sList){
   if(s.equals("ok")){
      isOk = true;
      break; // jump out of the loop
   }
}

if(isOk)
{
    // do something
}

However, in your case it might be better to do something like this:

if(sList.Contains("ok"))
{
    // at least one element is "ok"
}
else
{
   // no elements are "ok"
}

Upvotes: 1

harryovers
harryovers

Reputation: 3138

foreach(string s in sList)
{
    if(s.equals("ok"))
    {
             return true;
    }
}
return false;

Upvotes: 1

spender
spender

Reputation: 120400

You could avoid explicit loops by taking the LINQ route:

sList.Any(s => s.Equals("ok"))

Upvotes: 62

vrxacs
vrxacs

Reputation: 173

You can use break which jumps out of the closest enclosing loop, or you can just directly return true

Upvotes: 7

Francis Gilbert
Francis Gilbert

Reputation: 3442

Use break; and this will exit the foreach loop

Upvotes: 119

Related Questions