وظيفة العددية في Linqtosql
-
06-09-2019 - |
سؤال
في ado.net/sqlclient، سأفعل شيئا مثل هذا:
SELECT COUNT(*) FROM SomeTable WHERE SomeKey = 1234
... وإطلاق النار عليه باستخدام التنفيذي لإرجاع قيمة العد - للحصول على فحص بسيط إذا كان هناك شيء ما.
كيف يمكنني أن أفعل نفس الشيء باستخدام LinqtosQL؟
المحلول
if (context.SomeTable.Any(row => row.SomeKey == 1234))
{
DoStuff();
}
يمكنك أيضا استخدام Count()
.
if (context.SomeTable.Count(row => row.SomeKey == 1234) > 0)
{
DoStuff();
}
ولكن هذا يتطلب دائما الذهاب من خلال جميع الصفوف حين Any()
يمكن العودة بعد الصف الأول المطابق - هكذا Any()
قد يكون أفضل أداء.
نصائح أخرى
تذكر أن LINQ إلى SQL يتم تأجيل التنفيذ، مما يعني، الاستعلام فقط ينفذ فعلا عند الوصول إلى المجموعة. لذلك:
var q = (from p in db.SomeTable
where p.SomeKey == 1234
select p).Count();
سوف تتحول إلى عدد محدد () على جانب SQL من الأشياء.
إذا كنت تبحث لمعرفة ما إذا كان هناك شيء ما، فيمكنك استخدام أي وظيفة:
if (context.SomeTable.Any(i => i.SomeKey == 1234))
{
return true;
}
أو إذا كنت تريد بالفعل معرفة هذا العدد، فيمكنك استخدام وظيفة حيث وظيفة العد:
context.SomeTable.Where(i=> i.SomeKey == 1234).Count();
لا تنتمي إلى StackOverflow