C# 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

在我的MVC应用程序中,我遇到了这个问题,我从昨天开始就一直在努力解决这个问题

下面的代码行显示了从实体到模型的映射

.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>())))