/ / सरल क्वेरी से कोई परिणाम नहीं मिल रहा है - c #, linq, एंटिटी-फ्रेमवर्क

सरल क्वेरी - सी #, linq, इकाई-ढांचे से कोई परिणाम नहीं प्राप्त

मैंने निम्नलिखित कोशिश की और इसने मुझे हर ट्यूटर को लौटा दिया

List<Tutor>tutorsList = tutors.ToList();

इसके अलावा, मैंने केवल एक विशिष्ट विषय (ट्यूटर-विषय n: n) के साथ ट्यूटर का चयन करने की कोशिश की है

Subject subjectEntity = subjects.Where(s => s.Name == input).FirstOrDefault();
List<Tutor>tutorsList = tutors.Where(t => t.Subjects.Contains(subjectEntity)) .ToList();

नतीजतन, मेरा tutorsList खाली है, यहां तक ​​कि subjectEntity सही है (मैंने इसे कंसोल पर मुद्रित किया है)। लेकिन जब मैं हर ट्यूटर को लूप करता हूं और सब्जेक्ट्स को प्रिंट करता हूं, तो सब्जेक्ट वाला ट्यूटर होता है input.

कोई विचार?

उत्तर:

उत्तर № 1 के लिए 1

यदि आपके पास भी आईडी है, तो आप निम्नलिखित कार्य कर सकते हैं:

Subject subjectEntity = subjects
.Where(s => s.Name == input)
.FirstOrDefault();
List<Tutor> tutorsList = tutors
.Where(t => t.Subjects
.Select(x => x.SubjectId)
.Contains(subjectEntity.SubjectId)
)
.ToList();

यदि नहीं, तो आप इसे एक ही क्वेरी में करने का प्रयास कर सकते हैं

List<Tutor> tutorsList = tutors
.Where(t => t.Subjects.Any(x => x.Name == input))
.ToList()

उत्तर № 2 के लिए 1

का उपयोग कर, एक पंक्ति में सरल बनाएं Any, जब एक आंतरिक संग्रह पर काम कर रहे हैं।

var tutorsList = tutors.Where(t => t.Subjects
.Any(s => s.Name == input)).ToList();

उत्तर № 3 के लिए 1

नीचे आज़माएं

Subject subjectEntity = subjects.Where(s => s.Name == input).FirstOrDefault();

List<Tutor>tutorsList = tutors.Where(t => t.Subjects.Any(x=>x.UniqueField==subjectEntity.UniqueField)).ToList();