복붙노트

[SQL] "NOT IN"사용하여 SQL 쿼리 LINQ

SQL

"NOT IN"사용하여 SQL 쿼리 LINQ

NOT IN 사용하여 SQL 쿼리하기 위해 할 수있는 LINQ?

예를 들면, 저자의 SELECT au_lname, 주 WHERE NOT IN 상태 ( 'CA', 'IN', 'MD')

해결법

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

    1.

        List<string> states = new List<string> { "CA", "IN", "MD" };
        var q = from a in authors
                where !states.Contains(a.state)
                select new { a.au_lname, a.state };
    

    또는

       var q = authors.Where( a => !states.Contains( a.state ) )
                      .Select( a => new { a.au_lname, a.state } );
    
  2. ==============================

    2.포함하여 당신은 그것을 할 수 있습니다 :

    포함하여 당신은 그것을 할 수 있습니다 :

           var states = new[]  {"CA", "IN", "MD"};
           var query = db.Authors.Where(x => !states.Contains(x.state));
    
  3. ==============================

    3.여기 예입니다 :

    여기 예입니다 :

    NorthwindDataContext dc = new NorthwindDataContext();
    dc.Log = Console.Out;
    var query =
        from c in dc.Customers
        where !(from o in dc.Orders
                select o.CustomerID)
               .Contains(c.CustomerID)
        select c;
    foreach (var c in query) Console.WriteLine( c );
    
  4. ==============================

    4.예!

    예!

    여기에 우리가 이미 쓴 코드에서 예입니다 :

    
                List<long> badUserIDs = new List { 10039309, 38300590, 500170561 };
                BTDataContext dc = new BTDataContext();
                var items = from u in dc.Users
                            where !badUserIDs.Contains(u.FbUserID)
                            select u;
    

    생성 된 SQL은 밝혀 :

    SELECT {[(T0)]. [아이디], [(T0)]. FbUserID], [(T0)]. FbNetworkID], [(T0)]. [이름] FROM [DBO]. [사용자] AS [T0] WHERE NOT ([(T0)]. FbUserID] IN (@ P0, P1 @ @ P2)) }

  5. from https://stackoverflow.com/questions/344478/linq-to-sql-query-using-not-in by cc-by-sa and MIT license