【问题标题】:MVC c# mapping to join string values ignoring NULL valuesMVC c#映射连接字符串值忽略NULL值
【发布时间】:2017-08-11 13:54:16
【问题描述】:

在我的 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,那么我上面代码的结果是

;;;;model5;model6

而我需要的是

模型5;模型6

assest.modelname == null时我需要忽略。

如果问题还不清楚,请告诉我。

【问题讨论】:

    标签: c# linq model-view-controller automapper


    【解决方案1】:

    试试这个:

    .ForMember(d => d.AssetModelList, op => op.MapFrom(s => string.Join("; ", s.Assets.Where(a=> a.ModelName != null).Select(a => a.ModelName).ToArray<string())))
    

    https://msdn.microsoft.com/en-us/library/bb308959.aspx

    Where、OrderBy 和 Select 运算符的参数称为 lambda 表达式,它们是非常类似于委托的代码片段。它们允许将标准查询运算符单独定义为方法并使用点表示法串在一起。这些方法共同构成了可扩展查询语言的基础。

    【讨论】:

      【解决方案2】:

      在进行联接之前,只需从集合中删除空值即可。

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

      【讨论】:

        猜你喜欢
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 2020-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-11
        • 1970-01-01
        相关资源
        最近更新 更多