0

我有一個DataContract類,我想轉換到另一個類,Movie但對於財產Movie.Characters我得到的錯誤...無法將源類型「無效」爲目標類型「的ICollection <Character>」

無法將源類型「void」爲目標類型「ICollection<Character>

如何創建一個新的Movie所以Character屬性設置正確映射到每個PersonMovie

var movies = dataContract.Movies.Select(m => new Movie { 
    Id = m.Id, 
    Title = m.Title, 
    Characters = m.AbridgedCast.ToList().ForEach(p => new Person { Name = p.Name, 
     RottenTomatoesId = p.Id, 
     Characters = p.Characters.ToList().ForEach(c => new Character { Name = c })}) 
}); 

MoviesDataContract.cs

public class MoviesDataContract { 
    [DataMember(Name = "total")] 
    public int Total { get; set; } 

    [DataMember(Name = "movies")] 
    public IEnumerable<Movie> Movies { get; set; } 

    #region Internal Classes 

    [DataContract] 
    public class Movie { 
     [DataMember(Name = "id")] 
     public int Id { get; set; } 

     [DataMember(Name = "title")] 
     public string Title { get; set; } 

     [DataMember(Name = "abridged_cast")] 
     public virtual IEnumerable<Person> AbridgedCast { get; set; } 
    } 

    [DataContract] 
    public class Person { 
     [DataMember(Name = "name")] 
     public string Name { get; set; } 

     [DataMember(Name = "id")] 
     public int Id { get; set; } 

     [DataMember(Name = "characters")] 
     public IEnumerable<string> Characters { get; set; } 
    } 

    #endregion 
} 

Movies.cs

public partial class Movie { 
    public Movie() { 
     this.Characters = new HashSet<Character>(); 
    } 

    public int Id { get; set; } 
    public string Title { get; set; } 
    public virtual ICollection<Character> Characters { get; set; } 
} 

public partial class Character { 
    public System.Guid Id { get; set; } 
    public int MovieId { get; set; } 
    public System.Guid PersonId { get; set; } 
    public string Name { get; set; } 

    public virtual Movie Movie { get; set; } 
    public virtual Person Person { get; set; } 
} 

public partial class Person { 
    public Person() { 
     this.Characters = new HashSet<Character>(); 
    } 

    public System.Guid Id { get; set; } 
    public string Name { get; set; } 
    public int RottenTomatoesId { get; set; } 

    public virtual ICollection<Character> Characters { get; set; } 
} 

回答

3

List<T>.ForEach(...)不返回任何東西。 See on MSDN

您可能想要使用Select(...)然後ToList()進行投影。

+0

它不應該返回'IEnumerable ' – bflemi3

+0

我會讓它返回一個水合列表,而不僅僅是一個盒裝的'IQueryable'。 –

+0

對不起,你能解釋一下水分列表的含義嗎?我不知道這個詞是什麼意思。 – bflemi3

相關問題