[SQL] Linq에로 변환 SQL은 널 (null)에 가입 왼쪽
SQLLinq에로 변환 SQL은 널 (null)에 가입 왼쪽
어떻게 LINQ에 제대로이 SQL을 변환 할 수 있습니다
select t1.ProgramID
from Program t1 LEFT JOIN ProgramLocation t2 ON t1.ProgramID = t2.ProgramID
where t2.ProgramID IS NULL
나는 그것을 시도하지만 그것은 작동하지 않습니다
var progy = (
from u in db.ProgramLocations join b in db.Programs
on u.ProgramID equals b.ProgramID into yG
from y1 in yG.DefaultIfEmpty()
where u.ProgramID == null
where u.ProgramID == null
select u.ProgramID
).ToList();
감사
해결법
-
==============================
1.이 질문에 따라, .DefaultIfEmpty을 사용하고 싶습니다.
이 질문에 따라, .DefaultIfEmpty을 사용하고 싶습니다.
var query = from p in Programs join pl in ProgramLocations on p.ProgramID equals pl.ProgramID into pp from pl in pp.DefaultIfEmpty() where pl == null select p;
다음은 몇 가지 모의 데이터 개체와 전체, 작업 예이다 :
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinqTest { class LinqProgram { public class Program { public int ProgramID { get; set; } public string ProgramName { get; set; } } public class ProgramLocation { public int ProgramLocationID { get; set; } public int ProgramID { get; set; } public string ProgramLocationName { get; set; } } public static List<Program> Programs = new List<Program>(); public static List<ProgramLocation> ProgramLocations = new List<ProgramLocation>(); static void Main(string[] args) { FillTestData(); var query = from p in Programs join pl in ProgramLocations on p.ProgramID equals pl.ProgramID into pp from pl in pp.DefaultIfEmpty() where pl == null select p; foreach (var r in query) { Console.WriteLine("{0}: {1}", r.ProgramID, r.ProgramName); } Console.ReadLine(); } private static void FillTestData() { var p = new Program() { ProgramID = Programs.Count + 1, ProgramName = "Scary Lesson" }; var pl = new ProgramLocation() { ProgramLocationID = ProgramLocations.Count + 1, ProgramID = p.ProgramID, ProgramLocationName = "Haunted House" }; Programs.Add(p); ProgramLocations.Add(pl); p = new Program() { ProgramID = Programs.Count + 1, ProgramName = "Terrifying Teachings" }; pl = new ProgramLocation() { ProgramLocationID = ProgramLocations.Count + 1, ProgramID = p.ProgramID, ProgramLocationName = "Mystical Mansion" }; Programs.Add(p); ProgramLocations.Add(pl); p = new Program() { ProgramID = Programs.Count + 1, ProgramName = "Unassociated Program" }; Programs.Add(p); } } }
-
==============================
2.이 시도
이 시도
var progy = ( from u in db.ProgramLocations join b in db.Programs on u.ProgramID equals b.ProgramID into yG from y1 in yG.DefaultIfEmpty() where y1 == null select u.ProgramID ).ToList();
당신은 MSDN에이 게시물을 확인할 수 있습니다.
당신을 위해이 작품을 바랍니다.
-
==============================
3.대신 제외하고 사용할 수 있을까요?
대신 제외하고 사용할 수 있을까요?
var progy = ( from u in db.ProgramLocations select u.ProgramID ).Except(from b in db.Programs select b.ProgramID);
-
==============================
4.
SELECT pfa.PetID, pt.PetTypeDesc, pfa.petname, pf.PetOwner, pf.remarks, pat.AdoptedBy FROM dbo.PetForAdoption pfa JOIN dbo.PetAdoptionTran pat ON pfa.PetID = pat.PetID JOIN dbo.PetTypes pt ON pfa.PetTypeID = pt.PetTypeID JOIN dbo.PetProfile pf ON pfa.PetID = pf.PetID ORDER BY pt.PetTypeDesc
from https://stackoverflow.com/questions/9171063/convert-sql-to-linq-left-join-with-null by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왜 VARCHAR 필요 길이 사양을합니까? (0) | 2020.06.07 |
---|---|
[SQL] 한계를 사용하여 JPA 2 CriteriaQuery, (0) | 2020.06.07 |
[SQL] PostgreSQL를위한 시간에 타임 스탬프 차이 (0) | 2020.06.07 |
[SQL] 생성 SQL 코드 프로그램 (0) | 2020.06.07 |
[SQL] 6 파라미터 스니핑 IF (0) | 2020.06.07 |