المرة الثانية التي تتصل بها .SelectMany(x => x.Contacts)
, ، أنت تعمل حاليًا مع مجموعة من ContactDetails
. من المشكوك فيه أنك ستتمكن من استخدامها SelectMany
عليه. ستحتاج إلى استخدام Select
في حين أن.
SelectMany
يتم استخدامه عندما تريد تحديد مجموعات متعددة من العناصر ووضعها في واحدة IEnumerable
. Select
يستخدم في الحقول الفردية. بما أنك تعمل مع كائنات من النوع ContactDetail
(وهو ما أفترض أنه يمكن أن يكون لديه اتصال واحد فقط) ، ستحتاج إلى استخدام Select
تحرير: هنا ما تفعله باختصار ، خطوة بخطوة:
groups_to_querry.SelectMany(x => x.Contacts)
: من جميع المجموعات التي أريد الاستعلام عن جميع جهات الاتصال العديدة. كل مجموعة لديها العديد من جهات الاتصال ، لذا ضعها جميعًا في واحدة IEnumerable
مجموعة من النوع Contact
.Where(x => x.ID == Guid.Empty)
: ... ولكن فقط تلك الاتصالات مع معرف فارغ
.SelectMany(p => p.ContactDetails)
: ثم حدد كل جهات الاتصال هذه 'ContactDetails. يحتوي كل جهة اتصال على العديد من ContactDetails ، لذا ضعها جميعًا في واحدة IEnumerable
مجموعة من النوع ContactDetail
.Where(x => x.ID == Guid.Empty)
: ... ولكن فقط تلك contactDetails مع معرف فارغ
.SelectMany(x => x.Contacts);
: الآن حدد كل من جهات اتصال ContactDetails. ومع ذلك ، نظرًا لأن المترجم يعلم أن هناك علاقة فردية بين جهات الاتصال و contactDetails (وليس العكس