我使用Linq從一些XML中提取值。下面顯示的是一個簡化的示例,顯示我遇到的問題。下面的代碼可以在下面顯示的XML上正常工作。我遇到的問題是groupBy
部分丟失。因爲Data.Element("groupBy").Element("property)
失蹤,因爲Data.Element("groupBy")
將爲空。是否有可能修改我的Linq語句以允許它提供默認值,還是應該以不同的方式處理它?通過Linq獲取XML值時設置默認值
var e = (from Data in theXML.Descendants("exportFile")
select new Export
{
OutputFileName = Data.Element("outputFileName") != null ? (string)Data.Element("outputFileName") : "",
GroupByProperty = Data.Element("groupBy").Element("property") != null ? (string)Data.Element("groupBy").Element("property") : ""
}).First();
<exportFile>
<outputFileName>output.xml</outputFileName>
<groupBy>
<property>DeviceId</property>
</groupBy>
</exportFile>
我覺得OP在說GROUPBY元素並未在XML存在。如果情況如此,這難道不會失敗嗎? – 2010-08-19 14:38:26
@Justin:是的,我誤讀 - 但現在修復:) – 2010-08-19 14:38:51
有趣。當你在調用鏈上游有一個空值時,我沒有意識到你可以使用FirstOrDefault()。每天學些新東西。 – 2010-08-19 14:47:05