سؤال

في هذه الحالة:

var allCustomers = from c in customers select c;
var oldCustomers = from o in allCustomers where o.age > 70 select o;

سوف حيث شرط الوصول إلى قاعدة البيانات ؟

هل كانت مفيدة؟

المحلول

أعتقد أنك تقصد:

var oldCustomers = from o in allCustomers where o.age > 70 select o;

و نعم, سوف تصل إلى قاعدة البيانات.

حاول استخدام LINQPad لرؤية SQL البرمجية التي تم إنشاؤها.هنا مثال:

لدي 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() لنرى كيف العديد من البنود ، إلخ) ، فإنه لن تؤدي أي استفسار/العملية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top