#c# #sql-server #entity-framework #linq
#c# #sql-сервер #entity-framework #linq
Вопрос:
Я пытаюсь использовать LINQ для объединения нескольких таблиц и получения имени метода распространения. У меня есть оператор SQL, который я использовал в качестве основы, который следует.
select dt.NAME
from i_doc.dbo.document as d
join i_doc.dbo.CONTACT as c
on c.DOC_ID = d.DOC_ID
join i_doc.dbo.RECIPIENT as r
on r.CONTACT_ID = c.CONTACT_ID
join i_doc.dbo.DISTRIBUTION_TYPE as dt
on dt.DISTRIBUTION_TYPE_ID = r.DISTRIBUTION_TYPE_ID
where c.CONTACT_TYPE_ID = 2
and r.DISTRIBUTION_TYPE_ID != 6
and d.DOC_ID = 28757
Этот конкретный запрос возвращает 1 элемент. Однако код LINQ, который у меня есть, ничего не возвращает. Далее следует код LINQ.
var distributionMethod = (from d in _documentEntities.DOCUMENTs
join c in _documentEntities.CONTACTs on d.DOC_ID equals c.DOC_ID
join r in _documentEntities.RECIPIENTs on c.CONTACT_ID equals r.CONTACT_ID
join dt in _documentEntities.DISTRIBUTION_TYPE on r.DISTRIBUTION_TYPE_ID equals dt.DISTRIBUTION_TYPE_ID
where c.CONTACT_ID == 2
amp;amp; r.DISTRIBUTION_TYPE_ID != 6
amp;amp; d.DOC_ID == DocID
select dt.NAME).ToList();
При попытке определить, что происходит, мы упростили запрос, чтобы проверить, правильно ли выполняется соединение, и протестировали следующий LINQ.
var test = (from dt in _documentEntities.DISTRIBUTION_TYPE
select dt.NAME).Take(100);
Этот LINQ, var test, приводит к соответствующим значениям.
Мой вопрос: почему мой запрос LINQ метода распределения ничего не возвращает, и что я могу сделать, чтобы это исправить?
Спасибо
Комментарии:
1. Ну, это заставляет меня чувствовать себя глупо ….. Если вы хотите получить кредит за ответ на мою конкретную проблему, не стесняйтесь указывать ответ, и я отмечу его как ответ и завершенный. Спасибо
Ответ №1:
В вашем запросе LINQ вы фильтруете по c.CONTACT_ID
, но в запросе SQL вы фильтруете по c.CONTACT_TYPE_ID
, так что это просто опечатка.
Комментарии:
1. Если это опечатка, разве вы не должны голосовать за закрытие вместо того, чтобы давать ответ?
2. Да, после изучения возможных близких причин я вижу, что опечатки, которые могут не помочь будущим читателям, должны быть закрыты, поэтому проголосовали за это.