如何在List <t> foreach循环中检查特定值</t>

时间:2014-04-29 14:35:17

标签: asp.net c#-4.0

需要帮助检查List<T> foreach循环中的特定值。如果有特定值,则显示特定的字符串值。

例如我如何...

If (value.something_2 == "Null")
{
    value.something_2 == ".";
}
Elseif (value.something_2 == " ")
{
    value.something_2 == "0";
}

如何将上述示例合并到“foreach”循环中?

见下面的代码。

protected void MyReport(string filename, IMyRepository repository)
{

    using (FileStream fileStream = new FileStream(Server.MapPath(@"~/Includes/") + filename, FileMode.Create))
    {
        using (StreamWriter writer = new StreamWriter(fileStream))
        {
            List<Report> _report = repository.GetMyReport().ToList();
            foreach (var value in _report)
            {
                String row01 = String.Format("{0, -10}{1, 23}{2, 120}{3, 8}",
                      value.somthing_1, 
                      values.something_2, 
                      value.something_3);

                 String row02 = String.Format("{0, -10}{1, 23}{2, 120}{3, 8}",
                      value.somthing_4, 
                      values.something_5, 
                      value.something_6);

                Writer.WriteLine(row01);
                Writer.WriteLine(row02);
            }
        }
        writer.Close();
    }
}

2 个答案:

答案 0 :(得分:2)

没有聪明的内置String.Format你可以为此做的,如果这是你的想法。但是,编译器有一些技巧可以减少你需要编写的代码量,例如

// if it's null, assign it to "."
var s2 = value.something_2 ?? ".";
// it can never be null here, so if there is whitespace default to "0"
value.something_2 = String.IsNullOrWhitespace(s2) ? "0" : s2;

答案 1 :(得分:0)

如果我理解你在说什么,可能更容易让另一个函数返回(可能)修改后的字符串,并将每个值传递给它,内联。

Sting row01 = String.Format("{0, -10}{1, 23}{2, 120}{3, 8}", myFunc(value.somthing_1), myFunc(values.something_2), myFunc(value.something_3));

然后将它放在同一个类

private string myFunc(string something){
    if (something == “Null”){
        return “.“;
    } else if (something == “ “) {
        return “0”;
    } else {
        return something;
    }
}