快速提问,我已经编写了这段代码(而且效果很好)
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
循环内的参数可以以某种方式变得更容易......
答案 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
语句来链接测试。