2016-06-10 42 views
0

時,其中使用樂趣<的XElement,bool>的我也低於如何loadin XML文件

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文檔。我通過使用屬於元素的擴展方法來過濾結果,我通過lambda表達式來實現過濾器。現在請任何人都可以幫助我如何實現相同的結果,但使用Func(<'XELEMENT,bool'> predicate)選項。 通過這種代碼在控制檯應用程序上工作的方式,您可以將鼠標懸停在上面並以清晰的方式查看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> 

回答

1

,那就是:

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

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

MyFilter是,如果更靈活限制值是一個參數。 –