इस दशा में:
var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;
मर्जी कहा पे खंड डेटाबेस तक पहुंचता है?
उत्तर:
जवाब के लिए 2 № 1मुझे लगता है तुम्हारा मतलब:
var oldCustomers = from o in allCustomers where o.age > 70 select o;
और हाँ, यह डेटाबेस तक पहुंच जाएगा।
उत्पन्न SQL कोड देखने के लिए LINQPad का उपयोग करने का प्रयास करें। यहां एक उदाहरण है:
मेरे पास एक Actor
सारणी जिसमें फ़ील्ड हैं:
Id | Name | Age
कोड:
var x = from c in Actors where c.Name.Contains("a") select c;
var y = from c in x where c.Age > 0 select c;
अनुवादित हो जाता है:
-- Region Parameters
DECLARE @p0 Int = 0
DECLARE @p1 NVarChar(3) = "%a%"
-- EndRegion
SELECT [t0].[Id], [t0].[Name], [t0].[Age]
FROM [Actor] AS [t0]
WHERE ([t0].[Age] > @p0) AND ([t0].[Name] LIKE @p1)
तो आप देख सकते हैं कि यह केवल दो प्रश्नों को कैसे मिलाता है।
याद रखें, IENumerables आलसी हैं, इसलिए जब तक कि उनके तत्वों को ज्ञात न हो (क्योंकि आप उनके माध्यम से पुन: प्रयास करते हैं, या क्योंकि आप करते हैं .Count()
यह देखने के लिए कि कितने आइटम हैं, आदि), यह किसी भी क्वेरी / ऑपरेशन निष्पादित नहीं किया।