2013-09-25 74 views
0

我正在將XML文檔解析到c#項目中以檢查名爲「Feature」的元素是否存在。 在c#中,我正在使用Feature Element中存在的內容來確定if語句是否應該運行。使用LINQ檢查是否存在XML元素

XML

<Projects> 
<Project> 
    <Name>Test</Name> 
    <Feature>AutoDev;AutoRev</Feature> 
</Project> 
</Projects> 

C#

var feature = (from project in XDocument.Load(xmlPath).Descendants("Project")          
where project.Element("Name").Equals(Project)          
select project.Element("Feature").Value).Single().Split(';'); 

if (names.Contains("Test")) 
     //then load ticket variables.... 
    if (feature.Contains("AutoDev")) 
     //then do this.... 

現在我收到一個錯誤: 序列不包含任何元素

使用任何方法建議時加載用於檢查元素是否存在於數組中的功能。不知道如何實現這個。

+0

是什麼'ev.PortfolioProject' .. – Anirudha

+0

使用' SingleOrDefault()'而不是'Single()'這樣你會得到一個空值,如果沒有找到,取而代之的例外。 – JNYRanger

+0

謝謝JNYRanger,我會加入並測試。 Anirudh - ev.PortfolioProject從應用程序層抓取項目名稱。 – blkhdy

回答

3
project.Element("Name").Equals(ev.PortfolioProject) 

應該

project.Element("Name").Value.Equals(ev.PortfolioProject) 
         ^
+0

一旦添加,我會得到一個不同的例外,「重複工作項目」 但這會讓我進一步沿着我的路徑完成。謝謝! – blkhdy

+0

@blkhdy使用首先,而不是單一的方法 – Anirudha

1

我認爲你缺少的.Valueproject.Element("Name")

試試這個:

var feature = (from project in XDocument.Load(xmlPath).Descendants("Project")          
where project.Element("Name").Value.Equals(ev.PortfolioProject)          
select project.Element("Feature").Value).Single().Split(';'); 
+0

謝謝埃斯特班! – blkhdy

+0

當然,隨時,謝謝! –