#c# #asp.net-core #lambda
#c# #asp.net-core #лямбда
Вопрос:
Кто-нибудь может мне помочь, как преобразовать инструкцию sql в linq и lambda вот так?
SELECT
tbl_terms.ID,
tbl_terms.Terms
FROM
tbl_terms
LEFT JOIN tbl_asn_uploaddoc ON tbl_terms.ID != tbl_asn_uploaddoc.Id_term
WHERE
tbl_asn_uploaddoc.Nip = '201948274838491943' amp;amp; tbl_asn_uploaddoc.STATUS = 1
Заранее спасибо
Комментарии:
1. Мы могли бы, но сначала я хотел бы увидеть ваши усилия, чтобы я знал, где вы испытываете трудности, и хотел бы дать вам лучшее объяснение.
2. Смотрите мой ответ ниже. Кстати, то, что вы здесь написали, не является ни SQL, ни LINQ.
Ответ №1:
LINQ в основном похож на SQL, если вы используете синтаксис запроса вместо синтаксиса метода. Вот что я смог быстро собрать. Не могу протестировать, потому что у меня нет ваших классов модели.
var Result = from t in context.tbl_terms
join d in context.tbl_asn_uploaddoc on t.ID != d.Id_term
where d.Nip = '201948274838491943' amp;amp; d.STATUS = 1
select t.ID, t.Terms
Комментарии:
1. Разве это не было бы объединением? Он хочет левое соединение.
2. @dotNet Спасибо за ваш ответ, но утверждение «….на t.ID != d.Id_term» недопустимо. 🙂 используется ли оператор left join?
Ответ №2:
Используйте приведенный ниже запрос, который выдаст вам LEFT JOIN
оба ваших объекта,
var result = (from t in _con.tbl_Terms
join u in _con.tbl_asn_uploaddocs on t.ID equals u.Id_term
into tu
where !tu.Any()
from u in tu.DefaultIfEmpty()
where u.Nip == "201948274838491943" amp;amp; u.STATUS == 1
select new
{
ID = t.ID,
Terms = t.Terms
}).ToList();
Где _con
находится ваш контекст.
Комментарии:
1. Спасибо за ваш ответ, я действительно ценю, и он почти действителен. я хочу выбрать данные, где «t.Id != u.Id_Term» 🙂
2. Ответ обновлен , пожалуйста, укажите эту строку =>
where !tu.Any()
и дайте мне знать
Ответ №3:
Вы можете использовать инструмент преобразования SQL в LINQ Linqer
Linqer — это инструмент преобразования SQL в LINQ. Это помогает изучать LINQ и преобразовывать существующие инструкции SQL.