2013-01-24 31 views
5

मैं लैम्ब्डा अभिव्यक्ति के साथ एक KeyValue जोड़ी संग्रह बनाने की कोशिश कर रहा हूं।लैम्ब्डा अभिव्यक्ति में KeyValuePair

यहां मेरी कक्षा है और नीचे मेरा लैम्ब्डा कोड है। मैं KeyValuePair बनाने में विफल रहा।

मैं ईद की KeyValuePair का एक संग्रह, कॉमेडी फिल्मों के लिए IsReleased प्राप्त करना चाहते हैं। मैंने त्वरित खोज के लिए हैशसेट में उन KeyValuePair को रखा।

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

usin HashSet के बजाय शब्दकोश वर्ग यहाँ पर विचार करें, मुझे लगता है कि इसे यहाँ अधिक उपयुक्त है। –

+0

_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);