关于ASP.NET:如何输出除C#中的一行以外的所有数据行

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
SET 1
Street 1
California 1770

SET 2
Street 2
New Jersey 1990

SET 3
Street 3
Oakland 2000

除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);