【发布时间】:2013-01-06 12:46:32
【问题描述】:
我有所有 MovieDTO 对象的集合以及用户最喜欢的电影的 MovieDTO 集合。
如果用户收藏中存在特定项目,我想在所有电影集合的每个对象中添加一个布尔标志 Selected =true。
我希望用一些 lambda 表达式或一些 Func 或某种方式来做,而不是写 两个 for-each 循环。
public class Movie{
public string Name{get;set;}
public DateTime ReleaseDate{get;set;}
public string Director {get;set;}
public int Id{get;set;}
//more property
}
//This class is mainly used to highlight the favourite movie in UI
public class MovieDTO{
public string MovieName{get;set;}
public boolean Selected{get;set;}
public int Id{get;set;}
}
List<Movie> AllMovies = MyService.AllMovies();
List<MovieDTO> UserFavouriteMovie = MyService.GetUserMovies();
List<MovieDTO> allMovieDTO = AllMovies.Select(x => new MovieDTO
{
Name=x.Name,
//Selected=true/false => here i want
// to check if x is exist in UserFavouriteMovie collection
}).ToList();
有什么建议不在这里为每个循环使用两个吗?
【问题讨论】:
-
如果不知道
Movie和MovieDTO的定义至少是不可能的。我们怎么知道它们是否真的相同?是基于Name字符串,有没有ID字段还是什么? -
@Servy 编辑了我的问题
标签: c# collections lambda