Asp.net:在foreach循环中处理null
我有一个foreach循环,循环遍历可能包含或不包含某个元素的结构:Asp.net:在foreach循环中处理null
<% foreach (XElement segnalazione in ((XElement)ViewData["collezioneSegnalazioni"]).Elements("dossier")) { %>
<tr>
<td><%= Html.Encode(segnalazione.Element("NUM_DOSSIER").Value) %></td>
<td><%= Html.Encode(segnalazione.Element("ANAG_RAGSOC_CGN").Value) %></td>
<td><%= Html.Encode(segnalazione.Element("ID_RIFATT_SEGN0").Value) %></td>
<td><%= Html.Encode(segnalazione.Element("FLG_STATUS").Value) %></td>
<td><%= Html.Encode(segnalazione.Element("DT_ACCADIMENTO").Value)%></td>
<td><%= Html.Encode(segnalazione.Element("COD_RAMO_LUNA").Value) %></td>
</tr>
<% } %>
现在,当Element(“DT_ACCADIMENTO”)不是时,我得到NullReferenceException在XElement中设置。有一个快速的方法来处理这个?我尝试使用
<td><%= Html.Encode(segnalazione.Element("DT_ACCADIMENTO").Value ?? "")%></td>
,但它不起作用,我想,它检查值是否为null,我对字段本身有问题。 任何帮助appxiated
<td><%= Html.Encode((string)segnalazione.Element("DT_ACCADIMENTO") ?? "")%></td>
尝试使用:
segnalazione.Element("NUM_DOSSIER") == null ? "" : segnalazione.Element("NUM_DOSSIER").Value
你查询XElement对象两次,如果有很多子元素,这可能会损害性能,我认为它比LINQ to XML中的普通方法没有任何优势。你不觉得吗? – 2009-06-08 12:44:38
你是绝对正确的,我认为你的解决方案更好。不知道为什么我得到所有的选票;-) – 2009-06-08 12:59:56
Mehrdad的解决方案不编码Value属性。当toString被调用时,元素是否输出它的Value属性?如果没有,那么我会认为这将是一个不正确的实施。 – Joseph 2009-06-08 13:08:10
明确运营商的的XElement串铸(http://msdn.microsoft.com/en-us/library/bb155263.aspx) – Joseph 2009-06-08 13:17:46