2009-09-17 57 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