SQL в Linq / Lambda

#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.