سؤال

كيف يمكنك إعادة كتابة هذا في 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.تحتاج إلى الانضمام إلى استعلامين.

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