2011-07-20 16 views
6

को देखते हुए निम्नलिखित वर्गों:Linq - जहां बच्चे वस्तु पर खंड

public class Nation 
{ 
    public string Name { get; set; } 
    public IEnumerable<City> Cities { get; private set; } 
} 

public class City 
{ 
    public string Name { get; set; } 
} 

मान लें Nation कुल जड़ है और इसलिए मैं केवल एक NationRepository और नहीं एक CityRepository (इस प्रकार Nation LINQ क्वेरी लिए प्रारंभ बिंदु है) । स्पष्टीकरण के लिए, मेरा प्रारंभिक बिंदु IQueryable<Nation> ऑब्जेक्ट होगा।

मैं एक प्रश्न जो निम्नलिखित तर्क के अनुसार City वस्तुओं का संग्रह रिटर्न कैसे लिख होगा:

सभी City उदाहरणों जिसका Name 'एम' जिसकी मूल Nation ब्रिटेन 'के नाम है' के साथ शुरू होता चयन करें?

उत्तर

13

आप निम्न करना होगा के बाद से @Justin Niessner मुझे हरा ... शायद घोंसला दूसरा जहां खंड

var result = nations.Where(n => n.Name == "UK") 
        .SelectMany(n => n.Cities.Where(c => c.Name.StartsWith("M")); 
8
इस तरह

:

var results = NationRepository.Where(n => n.Name == "UK") 
           .SelectMany(n => n.Cities) 
           .Where(c => c.Name.StartsWith("M")); 
2
var result = nations.Where(n => n.Name == "UK") 
        .SelectMany(n => n.Cities) 
        .Where(c => c.Name.StartsWith("M")); 

संपादित करें:

from n in Nation 
where n.Name == "UK" 
from c in n.Cities 
where c.Name.StartsWith("M") 
select c 
संबंधित मुद्दे