这是我从匿名函数返回的属性:
var ret = new
{
TagName = String.Join( ",", post.Tags.Select( t => t.TagName ) )
};
这里,帖子与标签有多对多的关系意味着帖子可以有多个标签。
我想在这里检查null,如果有任何标记然后返回逗号分隔,否则返回空字符串。
到目前为止,我尝试了许多方法来对此进行无效检查,但没有得到确切的语法:
TagName = String.Join( ",", post.Tags.Select( t => t.TagName ) + ( post.Tags != null ? '' ) )
如果是简单的字符串,我可以这样得到它:
alert( post.username != null ? ' ' + post.username : '') )
答案 0 :(得分:3)
尝试这样的事情
TagName = post.Tags != null ? String.Join(",", post.Tags.Select( t => t.TagName ) ) : ""
并查看此链接有关trensry操作员的信息 https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.90).aspx
答案 1 :(得分:1)
如果我理解正确,你想连接标签,但如果没有标签,那么返回一个空字符串?我还假设你想忽略post.Tags
的空(或空)成员?
var ret = new {
TagName = ( post.Tags == null || post.Tags.Length == 0 ) ?
String.Empty :
String.Join( ",",
post.Tags
.Where( t => t != null && !String.IsNullOrWhiteSpace( t.TagName ) )
.Select( t => t.TagName )
)
};
答案 2 :(得分:1)
基于this相关帖子中的解决方案。你可以这样做
var ret = new
{
var tags = post.Tags.OrEmptyIfNull();
TagName = String.Join( ",", tags.Select( t => t.TagName ) )
};
OrEmptyIfNull
基本上是空合并运算符??
的包装器,但我发现更容易阅读爆炸版本。如果集合为空,String.Join
将生成一个空字符串,您可以简单地传入标记,因为它知道它永远不会为空
答案 3 :(得分:1)
您可以使用以下内容:
var test = {
TagNames= post.Tags!=null && post.Tags.Any() ? String.Join(",", post.Tags.Select(x=>x.TagName) : ""
}