साथ संस्थाओं के लिए LINQ का उपयोग करने चलो कहते हैं कि मैं निम्नलिखित मॉडल हैं:सबसे अच्छा तरीका है एक संग्रह संपत्ति
आप देख सकते हैं प्रत्येक शहर में एक या अधिक रेलवे स्टेशन है।
और मैं निम्न प्रकार है:
public List<CityDTO> GetCities()
{
using (var db = new CityDataContext())
{
var cities = db.Cities;
var trainstations = db.TrainStations;
var query =
(from city in cities
select new CityDTO
{
CityName = city.Name,
StateName = city.State
}).ToList();
return query;
}
}
प्रश्न:
public class CityDTO
{
public string CityName { get; set; }
public string StateName { get; set; }
public List<string> Trainstations { get; set; }
}
अब LINQ बारे में अच्छी बात यह है कि मैं इकाई की रूपरेखा क्वेरी और मेरी प्रकार का एक नया संग्रह लौट सकते है है: क्या मैं अपने सिटीडीटीओ कक्षा में जोड़ने के लिए उसी LINQ क्वेरी में रेलवे स्टेशन के नामों का संग्रह भी वापस कर सकता हूं?
public List<CityDTO> GetCities()
{
using (var db = new CityDataContext())
{
var cities = db.Cities;
var trainstations = db.TrainStations;
var query =
(from city in cities
join trainstation in trainstations
on city.CityId
equals trainstation.CityId into orderGroup
select new CityDTO
{
CityName = city.Name,
StateName = city.State
//assign List<string> of trainstation names to CityDTO.Trainstations
}).ToList();
return query;
}
}
के साथ ऊपर से जुड़ें अन्य समस्या यह है कि (अपने ट्रेन स्टेशनों से प्रत्येक के लिए) एक ही शहर का नाम कई बार वापस आ जाएगी है, और मैं केवल शहर में प्रति CityDTO का एक उदाहरण चाहते हैं।
क्या यह दो LINQ स्टेटमेंट के साथ किया गया है? शहरों की एक नई सूची पाने के लिए, और दूसरा प्रत्येक के लिए ट्रेन स्टेशनों की सूची प्राप्त करने के लिए?
(from city in cities
select new CityDTO
{
CityName = city.Name,
StateName = city.State,
Trainstations = city.TrainStations.Select(ts => ts.Name).ToList()
})
ऊपर
Select()
को परियोजना उपयोग कर रहा है: क्योंकि वहाँ एक नेविगेशन-संपत्ति City
से TrainStations
तो एफई के लिए स्वचालित रूप से आप के लिए स्टेशनों को पुनः प्राप्त करने में सक्षम हो जाएगा है
भयानक। धन्यवाद – Duanne