C# - 高级foreach语句?

时间:2012-01-01 23:00:34

标签: c# foreach

我目前有:

string settings = "setting1:value1;setting2:value2";
string[] pair;
foreach(string setting in settings.Split(';'))
{
    pair = setting.Split(':');
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

我会更喜欢以下内容:

string settings = "setting1:value1;setting2:value2";
foreach (string[] pair in string setting.Split(':') in settings.Split(';'))
{
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

这两个in关键字看起来有点荒谬,但我认为这样的事情很可能也很容易,我只是不知道如何。

那么,有可能吗?

4 个答案:

答案 0 :(得分:8)

我不确定这是否更具可读性,但你要求它,我觉得它看起来很酷; - )

string settings = "setting1:value1;setting2:value2";
foreach(var pair in settings.Split(';').Select(str => str.Split(':')))
{
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

(我没有编译它,所以如果有语法错误我很抱歉)

答案 1 :(得分:7)

作为其他发布的答案的替代方法,您还可以使用LINQ语法:

string settings = "setting1:value1;setting2:value2";
foreach(string[] pair in
    from setting in settings.Split(';')
    select setting.Split(':'))
{
    MessageBox.Show(pair[0] + ":" + pair[1]);
}

答案 2 :(得分:1)

foreach (string[] pair in settings.Split(';').Select(setting => setting.Split(':')))
{
   MessageBox.Show(pair[0] + ":" + pair[1]);
}

答案 3 :(得分:0)

foreach (string settingstr in settings.Split(';'))
{
    string[] setval = settingstr.Split(':');
    string setting = setval[0];
    string val = setval[1];
}