如何在加载 XML 文件时在 where 中使用 Fun<XELEMENT,bool>

How to use Fun<XELEMENT,bool> in where when loadin XML file

我做了下面的例子

 IEnumerable<string> names = from student in XDocument.Load(@"E:\Data.xml").Element("Students").Elements("Student").Where(i=>(int)i.Element("TotalMarks") > 800)
                                    orderby (int)student.Element("TotalMarks") descending
                                    select student.Element("Name").Value;

        foreach (string name in names)
        {
            Console.WriteLine(name);
        }

此示例只是从本地 HD 加载 xml 文档。我通过使用属于 Elements 的 where 扩展方法过滤了结果,我通过 lambda 表达式实现了过滤器。现在请任何人帮助我如何获得相同的结果但使用 Func(<'XELEMENT,bool'> predicate) option 。 顺便说一句,这段代码在控制台应用程序上工作,您可以将鼠标悬停在上面的位置,并以清晰的方式查看 Func。 这是 xml 文件的名称 Data.xml

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--Creating an XML Tree using LINQ to XML-->
<Students>
  <Student Id="101">
    <Name>Mark</Name>
    <Gender>Male</Gender>
    <TotalMarks>800</TotalMarks>
  </Student>
  <Student Id="102">
    <Name>Rosy</Name>
    <Gender>Female</Gender>
    <TotalMarks>900</TotalMarks>
  </Student>
  <Student Id="103">
    <Name>Pam</Name>
    <Gender>Female</Gender>
    <TotalMarks>850</TotalMarks>
  </Student>
  <Student Id="104">
    <Name>John</Name>
    <Gender>Male</Gender>
    <TotalMarks>950</TotalMarks>
  </Student>
</Students>

如果您希望使用单独的函数而不是内联 lambda,这里是:

private bool MyFilter(XElement elt)
{
    return (int)elt.Element("TotalMarks") > 800;
}

// then in your query ... Where(i=>MyFilter(i)) ...