2013-01-24 38 views
5

我正尝试用lambda表达式创建一个KeyValue对集合。Lambda表达式中的KeyValuePair

这是我的课程,下面是我的lambda代码。我未能创建KeyValuePair。

我想Id的KeyValuePair集合,IsReleased为 喜剧电影。我把这些KeyValuePair放在HashSet中以便快速搜索

public class Movie{ 
    public string Name{get;set;} 
    public int Id{get;set;} 
    public bool IsReleased{get;set;} 
    //etc 
} 

List<Movie> movieCollection=//getting from BL 

var movieIdReleased= new 
HashSet<KeyValuePair<int,bool>>(movieCollection.Where(mov=> mov.Type== "comedy") 
            .Select(new KeyValuePair<int,bool>(????)); 
+0

这里考虑全光照词典类,而不是HashSet的,我想这是比较合适的位置。 –

+0

包含电影ID的_KeyValuePair_的_HasSet ?!!你能解释一下你想做什么吗? –

回答

8

你应该通过拉姆达成.Select方法,不只是表达:

.Select(movie => new KeyValuePair<int,bool>(movie.Id, movie.IsReleased)) 

希望帮助!

2
//.Select(new KeyValuePair<int,bool>(????)); 
.Select(movie => new KeyValuePair<int,bool>() 
       { Key = movie.Id, Value = movie.IsReleased}); 
+0

是的。这工作。谢谢。我忘了添加exp =>。 –

1
var comedyMovies = movieCollection 
    .Where(mc => "comedy".Equals(mc.Type, StringComparison.OrdinalIgnoreCase)) 
    .Select(mc => new KeyValuePair<int, bool>(mc.Id, mc.IsReleased)); 
var distinctComedyMovies = new HashSet<KeyValuePair<int,bool>>(comedyMovies);