Linq to Xml noob вопрос - PullRequest
0 голосов
/ 16 июля 2009

Я пытаюсь разобрать mvcSiteMap, у меня большая его часть работает, но мой пункт where это не правильно. он всегда возвращает строку, которую должно исключать предложение where.

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();

Я получаю одинаковое количество возвращаемых строк, независимо от того, есть ли там предложение where или нет. это похоже на то, где предложение where всегда истинно, даже если элемент title выведенного lsit содержит «Bulk Order Request» в качестве «title

Я уверен, что делаю что-то глупое Обвиоулси, но я не вижу этого.

Спасибо

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>

1 Ответ

1 голос
/ 16 июля 2009

переписал не лямбда работает нормально

            XElement xelement2 = XElement.Load( filePath );

            var query = from c in xelement2.Descendants()
            where (string)c.Attribute("title").Value != nodeTitle 
            select c; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...