使foreach循环参数更有效

时间:2013-12-09 05:19:46

标签: c# foreach

快速提问,我已经编写了这段代码(而且效果很好)

foreach (XElement element in xdoc.Descendants("camera").Where(info => info.Element("group").Value == "A"))
{
    A.Items.Add(AddToGroup(element));
}
foreach (XElement element in xdoc.Descendants("camera").Where(info => info.Element("group").Value == "B"))
{
    B.Items.Add(AddToGroup(element));
}

有没有办法可以提高效率?特别是,我想知道foreach循环是否可以以某种方式融合在一起,和/或foreach循环内的参数可以以某种方式变得更容易......

2 个答案:

答案 0 :(得分:5)

foreach (XElement element in xdoc.Descendants("camera"))
{
    var value = element.Element("group").Value;
    if (value == "A")
        A.Items.Add(AddToGroup(element));
    else if (value == "B")
        B.Items.Add(AddToGroup(element));
}

虽然我只想使用Linq

答案 1 :(得分:2)

是的,您可以将两个循环合并在一起,您只需要将结果集包含在两组数据中,然后在foreach循环中正确测试

foreach (XElement element in xdoc.Descendants("camera")
                                 .Where(info => info.Element("group").Value == "A") || 
                                                info.Element("group").Value == "B"))
{
    if(element.Element("group").Value == "A")
        A.Items.Add(AddToGroup(element));
    else
        B.Items.Add(AddToGroup(element));
}

如果您有更多元素,只需使用else if语句来链接测试。