Пытается создать запрос Linq, который может выполнять несколько запросов в одной команде вместо нескольких страниц результатов поиска. Он отлично работает, когда я пытаюсь найти несколько записей, которые имеют предмет (в моем случае CHIEF_COMPLAINT) и комментарии с определенным словом. Проблема в том, когда я хочу искать серийные номера.Linq Присоединиться, когда вторая таблица будет иметь несколько записей
Здесь есть две проблемы. Один из них заключается в том, что к конкретному билету могут быть прикреплены несколько единиц оборудования, а также отдельное оборудование может быть связано с несколькими билетами. Когда я запрашиваю таблицу, используемую для привязки оборудования к билетам (VIEW_WT_EQUIP, используя представление, потому что там, где отображается серийный номер), я могу получить несколько результатов с одним и тем же Ticket_ID.
Это запрос, который у меня есть сейчас, но он не возвращает никаких результатов, когда я помещаю серийный номер, который, как я знаю, находится в системе.
var query = from a in db.VIEW_WT_HEADERs
join c in db.VIEW_WT_EQUIPs on a.TICKET_ID equals c.TICKET_NUMBER into c_group
from c2 in c_group
join b in db.WT_EVENTs on a.TICKET_ID equals b.TICKET_ID
where b.COMMENTS.Contains(input) || a.CHIEF_COMPLAINT.Contains(input) || c2.SERIAL_NUMBER.Contains(input)
orderby a.TICKET_ID descending
select new { a.TICKET_ID, a.ENTRY_DATE, a.CONTACT, a.CHIEF_COMPLAINT, a.STATUS };
Я также попробовал метод, где я использовал 2 Linq запросов и поставить все номера билета из последовательного поиска номера в списке, но второй запрос не нравится, что я пытался сравнить целочисленный массив ,
Я думаю, что я просто собираюсь сделать это неправильно. Присоединиться, вероятно, не самый правильный способ сделать это, но я не знаю, как сообщить основному запросу, чтобы вытащить все билеты, связанные с частью оборудования.
Пожалуйста, дайте мне знать, где я могу уточнить, потому что я знаю, что это объяснение грубо.
Спасибо за отзыв. Я буду работать в моем файле DataClasses и попытаюсь улучшить настройку Linq. Единственная проблема с предложением, которое вы дали, это FirstOrDefault(). На самом деле это может быть правильно, но я был бы обеспокоен, если часть оборудования появится на нескольких билетах. Поэтому, если я скажу x.SERIAL_NUMBER.Contains (input), он отобразит только первый найденный. Я думаю, если бы я мог (x.SERIAL_NUMBER.Contains (input) && x.TICKET_ID! = X.TICKET_ID). Фу, это даже не имеет смысла. –
Итак, вместо FirstOrDefault вы можете использовать Any(). Как 'x.Any (i => i.Serial_Number.Contains (что-то))' –
Продолжает сообщать мне, что мой VIEW не имеет определения для Any. –