2013-01-24 12 views
5

ラムダ式のKeyValueペアコレクションを作成しようとしています。ラムダ式のKeyValuePair

ここに私のクラスがあり、その下に私のラムダコードがあります。 KeyValuePairの作成に失敗しました。

私は コメディ映画のためにIsReleased IdのKeyValuePairのコレクションを、取得したいです。クイック検索のために、それらの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ののusin Dictionaryクラスを考えてみましょう。 –

+0

_KeyValuePair_の_HasSet_にムービーIDが含まれていますか?あなたは何をしたいのか説明できますか? –

答えて

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); 
関連する問題