【问题标题】:LINQ to SQL query using "NOT IN"使用“NOT IN”的 LINQ to SQL 查询
【发布时间】:2010-09-25 13:27:26
【问题描述】:

可以使用 NOT IN 进行 LINQ to SQL 查询吗?

例如,SELECT au_lname, state FROM authors WHERE state NOT IN ('CA', 'IN', 'MD')

【问题讨论】:

    标签: sql .net linq linq-to-sql


    【解决方案1】:

    这是一个例子:

    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 );
    

    【讨论】:

    • 实际上不需要执行子查询 - Contains / !Contains 将在主查询的上下文中工作。
    【解决方案2】:
        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 } );
    

    【讨论】:

      【解决方案3】:

      您可以使用 Contains 来做到这一点:

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

      【讨论】:

        【解决方案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].[UserID], [t0].[FbUserID], [t0].[FbNetworkID], [t0].[Name], FROM [dbo].[Users] AS [t0] WHERE NOT ([t0].[FbUserID] IN (@p0, @p1, @p2)) }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-04
          • 1970-01-01
          • 2010-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-23
          • 1970-01-01
          相关资源
          最近更新 更多