2009-09-17 62 views
0

我試圖讓null coallescing操作符在ASP.NET MVC中使用LINQ表達式。LINQ和空煤礦

這是我的表達。

<%= Html.Encode(item.Ring.Keys.Single<ProjectOne.Key>(k => k.Literal.Value == "Class").KeyValue) %> 

基本上,它發現基於給定的名稱的「鑰匙」類的一個實例,名稱爲標題,其結果是該鍵的值。我想返回一個空字符串,如果它沒有找到一個匹配的鍵。

回答

2

如何:

item.Ring.Keys 
    .Where(k => k.Literal.Value == "Class") 
    .Select(k => k.KeyValue) 
    .SingleOrDefault(); 

這是假設你想有一個空引用如果它沒有找到。

item.Ring.Keys 
    .Where(k => k.Literal.Value == "Class") 
    .Select(k => k.KeyValue) 
    .SingleOrDefault() ?? ""; 

還有,我不喜歡儘可能多的另一種選擇:如果你寧願有一個空字符串,只是在末尾添加?? ""

(item.Ring.Keys 
    .SingleOrDefault(k => k.Literal.Value == "Class") 
     ?? new ProjectOne.Key { KeyValue = null }).KeyValue; 
+0

好了,它需要在拉達表達。我無法在視圖中正確使用完整的LINQ語法。這就是我似乎無法正確工作的原因。 – Ciel 2009-09-17 15:46:16

+0

對不起,我誤解了。是的,這是有效的。我想知道是否有一個更簡單的方法來做到這一點,如果沒有找到該對象總是會返回適當的東西... – Ciel 2009-09-17 15:50:06

+0

我會用另一個選項編輯。 – 2009-09-17 15:53:51