2009-07-15 6 views
0

J'essaye d'analyser un mvcSiteMap, j'ai la plupart du travail, mais ma clause où il n'est pas bon. il renvoie toujours la ligne que la clause where doit exclure.Linq à Xml noob question

nodeTitle = "Bulk Order Request"; 

XElement xelement2 = XElement.Load(filePath); 
var urlDescList1 = (xelement2.Descendants() 
    // Select node with 'Favorite Social Sites' 
    .Where(node => (string) node.Attribute("title").Value != nodeTitle) 
    .SelectMany(node => node.Elements()) 
    .Select(node => new 
    { 
     title = node.Attribute("title").Value, 
     url = node.Attribute("action").Value 
    })).ToList(); 

Je reçois le même nombre de lignes renvoyées que la clause where soit présente ou non. c'est comme si la clause where est toujours vraie, même si l'élément title de la sortie lsit contient "Bulk Order Request" comme son titre

Je suis sûr que je fais quelque chose d'obvioulsy stupide, mais je ne peux pas le voir.

Merci,

Eric-

xml

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-1.0"> 
    <mvcSiteMapNode title="Home" controller="Home" action="Index" isDynamic="true" dynamicParameters="*" > 
     <mvcSiteMapNode title="Home" controller="RunWebForm" action="DisplayPage/~-Scout_Main-HelloPage.aspx" roles="*" /> 
     <mvcSiteMapNode title="Inbond Call" controller="RunWebForm" action="DisplayPage/~-Scout_HandleCall-StartCall.aspx" roles="*" /> 
     <mvcSiteMapNode title="Reports" controller="NoController" action="NoAction/80" roles="*" > 
      <mvcSiteMapNode title="Activity By Type" controller="Reports" action="ActivityByType" roles="*" /> 
      <mvcSiteMapNode title="Activity By Agent" controller="Reports" action="ActivityByAgent" roles="*" /> 
      <mvcSiteMapNode title="Activity By Language" controller="Reports" action="ActivityByLang" roles="*" /> 
      <mvcSiteMapNode title="Complaints" controller="Reports" action="ComplaintReport" roles="*" /> 
      <mvcSiteMapNode title="Volume by Date Time" controller="Reports" action="VolumeByDateTime" roles="*" /> 
      <mvcSiteMapNode title="Activity By Gender" controller="Reports" action="CallPersonActivityByGenderReport" roles="*" /> 
      <mvcSiteMapNode title="Prospects by Age" controller="Reports" action="ActivitybyProspectsbyAge" roles="*" /> 
      <mvcSiteMapNode title="Prospects by Ethnicity" controller="Reports" action="ActivitybyEthnicity" roles="*" /> 
      <mvcSiteMapNode title="Prospects by Gender" controller="Reports" action="ActivitybyGender" roles="*" /> 
      <mvcSiteMapNode title="Prospects by Language" controller="Reports" action="ActivitybyLanguage" roles="*" /> 
      <mvcSiteMapNode title="Activity by Referral Source" controller="Reports" action="ActivitybyReferralSource" roles="*" /> 
     </mvcSiteMapNode> 
     <mvcSiteMapNode title="Fullfillment letter" controller="NoController" action="NoAction/9" roles="*" > 
      <mvcSiteMapNode title="Bulk Order Request" controller="Reports" action="ActivityByBulkOrderRequest" roles="*" /> 
      <mvcSiteMapNode title="Letter English" controller="Reports" action="LetterEnglish" roles="*" /> 
      <mvcSiteMapNode title="Letter English - General Inquiry" controller="Reports" action="LetterEnglishForGeneralInquiry" roles="*" /> 
     </mvcSiteMapNode> 
     <mvcSiteMapNode title="Maintenance" description="Maintenance" controller="NoController" action="NoAction/11" roles="4048"> 
      <mvcSiteMapNode controller="RunWebForm" action="DisplayPage/~-Scout_Main-Administration-MaintainScripts.aspx" title="Maintain Call Scripts " description="Maintain Call Scripts" roles="4048"/> 
      <mvcSiteMapNode controller="RunWebForm" action="DisplayPage/~-Scout_Main-Administration-MediaTypeMaintain.aspx" title="Maintain Media Items " description="Maintain Media Items" roles="4048"/> 
      <mvcSiteMapNode controller="RunWebForm" action="DisplayPage/~-Scout_Main-Administration-CallMainSource.aspx" title="Maintain Call Main Sources " description="Maintain Call Main Sources" roles="4048"/> 
      <mvcSiteMapNode controller="RunWebForm" action="DisplayPage/~-Scout_Main-Administration-CallSecondarySource.aspx" title="Maintain Call Secondary Sources " description="Maintain Call Secondary Sources" roles="4048"/> 
      <mvcSiteMapNode controller="RunWebForm" action="DisplayPage/~-Scout_Main-Administration-CallOtherLanguage.aspx" title="Maintain Additional Languages" description="Maintain Additional Languages" roles="4048"/> 
     </mvcSiteMapNode> 
     <mvcSiteMapNode controller="Account" action="Logon" title="Logout" description="Logout and return to the login screen" roles="*" /> 
     </mvcSiteMapNode> 
</siteMap> 
+0

S'il vous plaît formater votre requête LINQ comme code. –

+0

N'est-ce pas du code maintenant? –

Répondre

1

réécrite non lambda fonctionne très bien

  XElement xelement2 = XElement.Load(filePath); 

      var query = from c in xelement2.Descendants() 
      where (string)c.Attribute("title").Value != nodeTitle 
      select c;