C# 最大限度地降低读取XML的性能成本

C# 最大限度地降低读取XML的性能成本,c#,xml,c#-4.0,C#,Xml,C# 4.0,我的XML文件类似于 <?xml version="1.0" encoding="utf-8" ?> <Controls> <Control ToValidate="0" ControlID="cmbTrialType" ControlType="FormControl" EngineValueID="" Enabled="0" Visible="1" Single="1" Input="1" Value="Superiority" ListIni

我的XML文件类似于

<?xml version="1.0" encoding="utf-8" ?> 
<Controls>
      <Control ToValidate="0" ControlID="cmbTrialType" ControlType="FormControl"   EngineValueID="" Enabled="0" Visible="1" Single="1" Input="1" Value="Superiority" ListInitValues="Superiority" FormulaEntered="" Caption="" IsValid="1" DecimalPlaces="" /> 
      <Control ToValidate="1" ControlID="cmbTrialType" ControlType="FormControl" EngineValueID="" Enabled="1" Visible="0" Single="1" Input="1" Value="Superiority" ListInitValues="Superiority" FormulaEntered="" Caption="" IsValid="1" DecimalPlaces="" /> 
</Controls>
见此:

var xml = XElement.Load(@"path\to\your\xml\file");

var elements = xml.Elements("Control").Where(e => e.Attribute("ToValidate") != null);

foreach(var element in elements)
{
    var validateAttribute = element.Attribute("ToValidate").Value;
    if (validateAttribute == "0")
    {
        // something if invalid
    }
    else 
    {
        // something if valid
    }
}
如果您只想使用只存在
ToValidate=“1”
ToValidate=“0”
的元素。你可以考虑使用这个词:

var elements = xml.Elements("Control").Where(e => e.Attribute("ToValidate") != null && 
                                                  e.Attribute("ToValidate").Value == "1");

1.保持原样执行checkval操作

  • 创建控件,不验证它,不检查其值
  • 希望你通过这门课

    试试这个:

    var elements = xml.Elements("Control").Where(
        e => e.Attribute("ToValidate") != null 
        && e.Attribute("ToValidate").Value == "1"
    ); 
    

    好啊到目前为止你都试了些什么?!我们不是来给你做作业的,那很好。你的问题是什么?您在尝试完成此任务时是否遇到了一些具体问题?请记住,StackOverflow不是一家外包公司,在这里您可以发布您的客户/老板/教师要求,并通过交换获得源代码。我尝试编写上述函数,请明确说明您的问题。我猜您需要一个执行速度更快(即性能成本更低)的函数?如果是(或不是),编辑你的“帖子”并添加一个真实的问题。“但它的性能成本要高得多”不是一个问题。由于这是公认的答案,我想OP会混淆性能和代码长度:-)我想知道为什么我的答案的最后一部分(复制)并标记为已接受?
    var elements = xml.Elements("Control").Where(
        e => e.Attribute("ToValidate") != null 
        && e.Attribute("ToValidate").Value == "1"
    );