How to print every data row except for one in C#
我有一个for循环来打印一组地址。但我想做一个条件,它跳过打印与postalcode-x值相同的地址集。
那么,我如何才能摆脱前环呢?该语言使用C,.NET框架。谢谢。
数据如下:
1 2 3 4 5 6 7 8 9 10 11 |
除Postalcode 1990外的输出:
仅打印SET1和SET3。
1 2 3 4 5 6 7 8 9 10 11 12 | foreach (Dataset.Row dr in A.Rows) { if (dr.id("1")) { string unit = dr.unit; string streetName = dr.street; string postalCode = dr.postal; content += String.Format("{0}", dr.name); if (showAddress) content +="<br/>" + GenAddr(unit,streetName, postalCode) +"<br/>"; } } |
1 2 3 4 5 | //inside the loop if(!currentset.PostalCode.Equals("1990")) { Console.WriteLine("Set:"+currentset); } |
简单的if语句可以满足您的需要。如果您想用循环更新问题以及集合是什么数据类型等,我可以为您的情况提供一个更为定制的答案。
注意,上面的代码不是"转义"循环。它只是有选择地从for循环内部打印出集合。下面的代码使用C中的continue语句"转义"循环中的其余代码。
1 2 3 4 5 6 | //inside the loop if(currentset.PostalCode.Equals("1990") { continue; //the curly braces are unnecessary for a single line in the if statement } Console.WriteLine("Set:"+currentset); //notice this is after the continue statement |
另一种选择是先列出列表,然后在有一个输出集合的循环之前,删除带有您不想要的LINQ的集合。
1 2 3 4 5 6 7 | List<set> sets=GetSets(); set.RemoveAll(aset => aset.PostalCode.Equals("1990")); //now loop through sets foreach(set currentset in sets) { Console.WriteLine("Set:"+set); } |
或使用LINQ。
1 | yourList.Where(x=>!x.PostalCode.Equals("1990")).ForEach(Console.WriteLine) |
还有一种方法可以做到:
1 2 3 4 5 | //inside the loop if(!currentset.PostalCode.Equals("1990")) { Console.WriteLine("Set:"+currentset); } |
或
1 2 3 4 | //inside the loop if(currentset.PostalCode.Equals("1990")) continue; Console.WriteLine("Set:"+currentset); |