2017-08-11 17 views
0

私のMVCアプリケーションでは、私は昨日から苦労しています。NULL値を無視して文字列値を結合するMVC c#マッピング

以下のコード行は、エンティティからモデルへのマッピングを表示します。

.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のときは無視する必要があります。

問題がまだ明確でない場合は教えてください。

答えて

2

このお試しください:

.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どこ、[並べ替えに

引数を、演算子を選択してはかなりの代表のようなコードの断片であるラムダ式と呼ばれています。標準のクエリ演算子は、メソッドとして個別に定義され、ドット表記法を使用してまとめられます。これらのメソッドはともに、拡張可能なクエリ言語の基礎を形成します。

+0

ありがとうございました。 –

0

結合を行う前に、コレクションからNULL値を削除するだけです。

.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>()))) 
関連する問題