C# Lambda表达式中的KeyValuePair

C# Lambda表达式中的KeyValuePair,c#,lambda,keyvaluepair,C#,Lambda,Keyvaluepair,我正在尝试使用lambda表达式创建键值对集合 这是我的类,下面是我的lambda代码。我未能创建KeyValuePair 我想获取Id的KeyValuePair集合,该集合是为 喜剧电影。我将这些KeyValuePair放入哈希集中,以便快速搜索 公共类电影{ 公共字符串名称{get;set;} 公共int Id{get;set;} 公共布尔被删除{get;set;} //等 } List movieCollection=//从BL获取 var movieIdReleased=新 HashSe

我正在尝试使用lambda表达式创建键值对集合

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

我想获取Id的KeyValuePair集合,该集合是为 喜剧电影。我将这些KeyValuePair放入哈希集中,以便快速搜索

公共类电影{
公共字符串名称{get;set;}
公共int Id{get;set;}
公共布尔被删除{get;set;}
//等
}
List movieCollection=//从BL获取
var movieIdReleased=新
HashSet(movieCollection.Where(mov=>mov.Type==“喜剧”)
.选择(新的KeyValuePair(????);

您应该将lambda传递到该
中。选择方法,而不仅仅是表达式:

.Select(movie => new KeyValuePair<int,bool>(movie.Id, movie.IsReleased))
.Select(movie=>newkeyvaluepair(movie.Id,movie.IsReleased))
希望有帮助!

//。选择(新的KeyValuePair(??);
 //.Select(new KeyValuePair<int,bool>(????));
 .Select(movie => new KeyValuePair<int,bool>() 
              { Key = movie.Id, Value = movie.IsReleased} );
.Select(movie=>newkeyvaluepair() {Key=movie.Id,Value=movie.isreleasd});
var commeymovies=movieCollection
其中(mc=>“喜剧”。等于(mc.Type,StringComparison.ordinallingorecase))
.Select(mc=>newkeyvaluepair(mc.Id,mc.IsReleased));
var distinctComedyMovies=新哈希集(commeymovies);

考虑使用Dictionary类而不是HashSet,我想在这里更合适。一组包含电影ID的KeyValuePair?!你能解释一下你想做什么吗?
 //.Select(new KeyValuePair<int,bool>(????));
 .Select(movie => new KeyValuePair<int,bool>() 
              { Key = movie.Id, Value = movie.IsReleased} );
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);