नीचे दिए गए सरल उदाहरण का उपयोग करते हुए, लाइनक से एसक्यूएल का उपयोग करके कई तालिकाओं से परिणाम वापस करने का सबसे अच्छा तरीका क्या है?
कहो कि मेरे पास दो टेबल हैं:
Dogs: Name, Age, BreedId
Breeds: BreedId, BreedName
मैं उनके साथ सभी कुत्तों को वापस करना चाहता हूं BreedName
। मुझे सभी कुत्तों को कुछ इस तरह से उपयोग करना चाहिए कि कोई समस्या न हो:
public IQueryable<Dog> GetDogs()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select d;
return result;
}
लेकिन अगर मुझे नस्लों वाले कुत्ते चाहिए और कोशिश करो कि मुझे समस्या हो:
public IQueryable<Dog> GetDogsWithBreedNames()
{
var db = new DogDataContext(ConnectString);
var result = from d in db.Dogs
join b in db.Breeds on d.BreedId equals b.BreedId
select new
{
Name = d.Name,
BreedName = b.BreedName
};
return result;
}
अब मुझे एहसास हुआ कि संकलक मुझे अनाम प्रकार का एक सेट वापस नहीं करने देगा क्योंकि यह कुत्तों की उम्मीद कर रहा है, लेकिन क्या कस्टम प्रकार बनाने के बिना इसे वापस करने का एक तरीका है? या क्या मुझे DogsWithBreedNames
उस प्रकार का चयन करने के लिए अपनी खुद की कक्षा बनानी होगी और उस प्रकार को निर्दिष्ट करना होगा? या कोई और आसान तरीका है?
foreach (var cust in query) Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);