복붙노트

[SQL] 어떻게 SQL에 LINQ를 가진 IN 서브 쿼리를 처리 할 수 ​​있습니까?

SQL

어떻게 SQL에 LINQ를 가진 IN 서브 쿼리를 처리 할 수 ​​있습니까?

나는 조금이 붙어 있어요. 기본적으로 나는 SQL에 LINQ에서 다음 SQL 쿼리 그런 짓을 할 :

SELECT f.* 
FROM Foo f
WHERE f.FooId IN (
    SELECT fb.FooId
    FROM FooBar fb
    WHERE fb.BarId = 1000
)

어떤 도움을 기꺼이받을 수있다.

감사.

해결법

  1. ==============================

    1.이 문서에서보세요. 당신이 IN의 동등한를 얻으려면 기본적으로, 먼저 내부 쿼리를 생성 한 다음, 포함 () 메소드를 사용해야합니다. 여기에 번역에서 내 시도는 다음과 같습니다

    이 문서에서보세요. 당신이 IN의 동등한를 얻으려면 기본적으로, 먼저 내부 쿼리를 생성 한 다음, 포함 () 메소드를 사용해야합니다. 여기에 번역에서 내 시도는 다음과 같습니다

    var innerQuery = from fb in FoorBar where fb.BarId = 1000 select fb.FooId;
    var result = from f in Foo where innerQuery.Contains(f.FooId) select f;
  2. ==============================

    2.

    var q = from t1 in table1
            let t2s = from t2 in table2
                      where <Conditions for table2>
                      select t2.KeyField
            where t2s.Contains(t1.KeyField)
            select t1;
    
    var q = from t1 in table1
            let t2s = from t2 in table2
                      where <Conditions for table2>
                      select t2.KeyField
            where t2s.Any(t1.KeyField)
            select t1;
    
  3. ==============================

    3.

    from f in Foo
        where f.FooID ==
            (
                FROM fb in FooBar
                WHERE fb.BarID == 1000
                select fb.FooID
    
            )
        select f;
    
  4. ==============================

    4.두 개의 별도의 단계를 사용하십시오 :

    두 개의 별도의 단계를 사용하십시오 :

    // create a Dictionary / Set / Collection fids first
    var fids = (from fb in FooBar
                where fb.BarID = 1000
                select new { fooID = fb.FooID, barID = fb.BarID })
                .ToDictionary(x => x.fooID, x => x.barID);
    
    from f in Foo
    where fids.HasKey(f.FooId)
    select f
    
  5. ==============================

    5.// 먼저 사전 / 설정 / 컬렉션 FIDS를 만들

    // 먼저 사전 / 설정 / 컬렉션 FIDS를 만들

    다른 기사 찾기

    var fids = (from fb in FooBar
                where fb.BarID = 1000
                select new { fooID = fb.FooID, barID = fb.BarID })
                .ToDictionary(x => x.fooID, x => x.barID);
    
    from f in Foo
    where fids.HasKey(f.FooId)
    select f
    
  6. ==============================

    6.이 시도

    이 시도

    var fooids = from fb in foobar where fb.BarId=1000 select fb.fooID
    var ff = from f in foo where f.FooID = fooids select f
    
  7. ==============================

    7.

    var foos = Foo.Where<br>
    ( f => FooBar.Where(fb.BarId == 1000).Select(fb => fb.FooId).Contains(f.FooId));
    
  8. ==============================

    8.

    from f in foo
    where f.FooID equals model.FooBar.SingleOrDefault(fBar => fBar.barID = 1000).FooID
    select new
    {
    f.Columns
    };
    
  9. ==============================

    9.// 먼저 사전 / 설정 / 컬렉션 FIDS를 만들

    // 먼저 사전 / 설정 / 컬렉션 FIDS를 만들

    다른 기사 찾기

    var fids = (from fb in FooBar where fb.BarID = 1000 select new { fooID = fb.FooID, barID = fb.BarID }) .ToDictionary(x => x.fooID, x => x.barID);
    
    from f in Foo where fids.HasKey(f.FooId) select f
    
  10. from https://stackoverflow.com/questions/51339/how-can-you-handle-an-in-sub-query-with-linq-to-sql by cc-by-sa and MIT license