2013-01-24 36 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);