/ / लिंक बाद के प्रसंस्करण व्यवहार - .NET, डेटाबेस, linq, orm, देर से बाध्यकारी

लिंक बाद में प्रसंस्करण व्यवहार - .NET, डेटाबेस, linq, orm, देर से बाध्यकारी

इस दशा में:

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() यह देखने के लिए कि कितने आइटम हैं, आदि), यह किसी भी क्वेरी / ऑपरेशन निष्पादित नहीं किया।