如何在具有相关数据的 属性 上将空检查函数放入匿名函数中
how to put null check function inside anonymous function on a property with related data
这是我的 属性,我正在 return 从匿名函数返回:
var ret = new
{
TagName = String.Join( ",", post.Tags.Select( t => t.TagName ) )
};
这里,post和tag是多对多的关系,意思是一个post可以有多个tag。
我想在此处进行空检查,如果有任何标签,则 return 后退逗号分隔,否则 return 空字符串。
到目前为止,我尝试了很多方法来像这样进行空检查,但没有得到准确的语法:
TagName = String.Join( ",", post.Tags.Select( t => t.TagName ) + ( post.Tags != null ? '' ) )
如果是简单的字符串,我可以这样得到:
alert( post.username != null ? ' ' + post.username : '') )
如果我没理解错的话,你想连接标签,但如果没有标签那么 return 一个空字符串?我还假设您也想忽略 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 )
)
};
尝试这样的事情
TagName = post.Tags != null ? String.Join(",", post.Tags.Select( t => t.TagName ) ) : ""
并检查这个 link 关于三元运算符
https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.90).aspx
基于 this 相关 post 中的解决方案。你可以这样做
var ret = new
{
var tags = post.Tags.OrEmptyIfNull();
TagName = String.Join( ",", tags.Select( t => t.TagName ) )
};
OrEmptyIfNull
基本上是对空合并运算符 ??
的包装,但我发现分解版本更容易阅读。因为如果集合为空,String.Join
将生成一个空字符串,您可以简单地传递标签,知道它永远不会为 null
你可以使用这样的东西:
var test = {
TagNames= post.Tags!=null && post.Tags.Any() ? String.Join(",", post.Tags.Select(x=>x.TagName) : ""
}
这是我的 属性,我正在 return 从匿名函数返回:
var ret = new
{
TagName = String.Join( ",", post.Tags.Select( t => t.TagName ) )
};
这里,post和tag是多对多的关系,意思是一个post可以有多个tag。
我想在此处进行空检查,如果有任何标签,则 return 后退逗号分隔,否则 return 空字符串。
到目前为止,我尝试了很多方法来像这样进行空检查,但没有得到准确的语法:
TagName = String.Join( ",", post.Tags.Select( t => t.TagName ) + ( post.Tags != null ? '' ) )
如果是简单的字符串,我可以这样得到:
alert( post.username != null ? ' ' + post.username : '') )
如果我没理解错的话,你想连接标签,但如果没有标签那么 return 一个空字符串?我还假设您也想忽略 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 )
)
};
尝试这样的事情
TagName = post.Tags != null ? String.Join(",", post.Tags.Select( t => t.TagName ) ) : ""
并检查这个 link 关于三元运算符 https://msdn.microsoft.com/en-us/library/zakwfxx4(v=vs.90).aspx
基于 this 相关 post 中的解决方案。你可以这样做
var ret = new
{
var tags = post.Tags.OrEmptyIfNull();
TagName = String.Join( ",", tags.Select( t => t.TagName ) )
};
OrEmptyIfNull
基本上是对空合并运算符 ??
的包装,但我发现分解版本更容易阅读。因为如果集合为空,String.Join
将生成一个空字符串,您可以简单地传递标签,知道它永远不会为 null
你可以使用这样的东西:
var test = {
TagNames= post.Tags!=null && post.Tags.Any() ? String.Join(",", post.Tags.Select(x=>x.TagName) : ""
}