2017-09-30 8 views
-1

からいくつかのオブジェクトを除外する:Automapper - 私は、次のマップのルールを持っているマップされたコレクション

CreateMap<ViewModels.ApplicationDriverAccidentFormVM, ApplicationDriverAccidentDomain>(); 

その後、私は両方の種類ごとに適切なコレクションである事故性質を持っている、ApplicationDriverDomainにViewModels.ApplicationDriverFormVMをマップします。

public class ApplicationDriverDomain 
{ 
    public List<ApplicationDriverAccidentDomain> Accidents { get; set; } 
} 

public class ApplicationDriverFormVM 
{ 
    public List<ApplicationDriverAccidentFormVM> Accidents { get; set; } 
} 

そして、私は(マップではない)満足していないすべてのレコード、いくつかの条件 私は、次のコードを書いてみる除外したい:

GetNotNullFromCollectionがある
 CreateMap<ViewModels.ApplicationDriverFormVM, ApplicationDriverDomain>() 
      .ForMember(dest => dest.Accidents, opt => opt.MapFrom(src => GetNotNullFromCollection(src.Accidents))) 

List<object> GetNotNullFromCollection(object input) 
    { 
     List<object> output = new List<object>(); 
     foreach (var item in (List<object>)input) 
     { 
      if (!Utils.IsAllNull(item)) 
       output.Add(item); 
     } 
     return output; 
    } 

でも、それは私に言われます:

'System.Collections.Generic.List 1[Web.ViewModels.ApplicationDriverAccidentFormVM]' to type 'System.Collections.Generic.List 1 [System.Object]'のオブジェクトをキャストすることができません。

なぜ、どのようにするのですか?

答えて

0

私は、以下の方法でそれを解決:

CreateMap<ViewModels.ApplicationDriverFormVM, ApplicationDriverDomain>().ForMember(dest => dest.Accidents, opt => opt.MapFrom(src => src.Accidents.Where(o => !Utils.IsAllNull(o)))) 
0

あなたのメソッドGetNotNullFromCollectionはオブジェクトを受け取りますが、それにリストを渡しています。 とにかく、私はオブジェクトの代わりにGenericsを使用することをお勧めします。

+0

一覧はオブジェクトではありませんか? –

+0

リストは、オブジェクトではなく総称タイプのリストです。ジェネリックスの主題についてもっと読む – Yarimi

関連する問題