C# MVC映射到连接字符串值忽略空值
在我的MVC应用程序中,我遇到了这个问题,我从昨天开始就一直在努力解决这个问题 下面的代码行显示了从实体到模型的映射C# MVC映射到连接字符串值忽略空值,c#,linq,model-view-controller,automapper,C#,Linq,Model View Controller,Automapper,在我的MVC应用程序中,我遇到了这个问题,我从昨天开始就一直在努力解决这个问题 下面的代码行显示了从实体到模型的映射 .ForMember(d => d.AssetModelList, op => op.MapFrom(s => string.Join("; ", s.Assets.Select(a => a.ModelName).ToArray<string>()))) 现在的问题是Assests.Count==6。因此,我需要使用分号组合所有ModelN
.ForMember(d => d.AssetModelList, op => op.MapFrom(s => string.Join("; ", s.Assets.Select(a => a.ModelName).ToArray<string>())))
现在的问题是Assests.Count==6。因此,我需要使用分号组合所有ModelName;但我还需要忽略Asset.ModelName==null时的情况
现在,在当前场景下,让我们假设Asset.count的前4个值为NULL,然后我上面代码的结果为
;;;;模型5;模式6
而我需要的是
模型5;模式6
当assest.modelname==null时,我需要忽略
如果问题尚不清楚,请告诉我。试试以下方法:
.ForMember(d => d.AssetModelList, op => op.MapFrom(s => string.Join("; ", s.Assets.Where(a=> a.ModelName != null).Select(a => a.ModelName).ToArray<string())))
:
Where、OrderBy和Select运算符的参数称为lambda表达式,它们是与委托非常相似的代码片段。它们允许将标准查询运算符单独定义为方法,并使用点表示法将其串在一起。这些方法共同构成了可扩展查询语言的基础
试试这个:
.ForMember(d => d.AssetModelList, op => op.MapFrom(s => string.Join("; ", s.Assets.Where(a=> a.ModelName != null).Select(a => a.ModelName).ToArray<string())))
:
Where、OrderBy和Select运算符的参数称为lambda表达式,它们是与委托非常相似的代码片段。它们允许将标准查询运算符单独定义为方法,并使用点表示法将其串在一起。这些方法共同构成了可扩展查询语言的基础
在进行联接之前,只需从集合中删除空值
.ForMember(d => d.AssetModelList,
op => op.MapFrom(s => string.Join("; ",
s.Assets
// Remove null or whitespace
// Alternatively, a.ModelName != null
.Where(a => !string.IsNullOrWhiteSpace(a.ModelName))
.Select(a => a.ModelName)
.ToArray<string>())))
在进行联接之前,只需从集合中删除空值
.ForMember(d => d.AssetModelList,
op => op.MapFrom(s => string.Join("; ",
s.Assets
// Remove null or whitespace
// Alternatively, a.ModelName != null
.Where(a => !string.IsNullOrWhiteSpace(a.ModelName))
.Select(a => a.ModelName)
.ToArray<string>())))