كيف أكتب SELECT FROM myTable WHERE id IN (SELECT...) في Linq؟
-
09-06-2019 - |
سؤال
كيف يمكنك إعادة كتابة هذا في Linq؟
SELECT Id, Name FROM TableA WHERE TableA.Id IN (SELECT xx from TableB INNER JOIN Table C....)
لذا، باللغة الإنجليزية البسيطة، أريد تحديد المعرف والاسم من TableA حيث يوجد معرف TableA في مجموعة النتائج من استعلام ثانٍ.
المحلول
from a in TableA
where (from b in TableB
join c in TableC on b.id equals c.id
where .. select b.id)
.Contains(a.Id)
select new { a.Id, a.Name }
نصائح أخرى
يدعم LINQ IN في شكل يحتوي على.فكر في "collection.Contains(id)" بدلاً من "id IN (collection)".
from a in TableA
where (
from b in TableB
join c in TableC
on b.id equals c.id
select b.id
).Contains(TableA.Id)
select new { a.Id, a.Name }
أنظر أيضا هذه المدونة بريد.
لا يوجد دعم جاهز لـ IN في LINQ.تحتاج إلى الانضمام إلى استعلامين.
لا تنتمي إلى StackOverflow