zoukankan      html  css  js  c++  java
  • LINQ系列:LINQ to SQL Exists/In/Any/All/Contains

    1. Any

      返回没有Product的Category

    var expr = from c in context.Categories
                where !c.Products.Any()
                select c;
    SELECT 
        [Extent1].[CategoryID] AS [CategoryID], 
        [Extent1].[CategoryName] AS [CategoryName]
        FROM [dbo].[Category] AS [Extent1]
        WHERE  NOT EXISTS (SELECT 
            1 AS [C1]
            FROM [dbo].[Product] AS [Extent2]
            WHERE [Extent1].[CategoryID] = [Extent2].[CategoryID]
        )
    var expr = from c in context.Categories
                where !c.Products.Any(p => p.UnitPrice > 10m)
                select c;
    SELECT 
        [Extent1].[CategoryID] AS [CategoryID], 
        [Extent1].[CategoryName] AS [CategoryName]
        FROM [dbo].[Category] AS [Extent1]
        WHERE  NOT EXISTS (SELECT 
            1 AS [C1]
            FROM [dbo].[Product] AS [Extent2]
            WHERE ([Extent1].[CategoryID] = [Extent2].[CategoryID]) AND ([Extent2].[UnitPrice] > cast(10 as decimal(18)))
        )

    2. All

    var expr = from c in context.Categories
               where c.Products.All(p => p.Discontinued)
               select c;
    SELECT 
        [Extent1].[CategoryID] AS [CategoryID], 
        [Extent1].[CategoryName] AS [CategoryName]
        FROM [dbo].[Category] AS [Extent1]
        WHERE  NOT EXISTS (SELECT 
            1 AS [C1]
            FROM [dbo].[Product] AS [Extent2]
            WHERE ([Extent1].[CategoryID] = [Extent2].[CategoryID]) AND ([Extent2].[Discontinued] <> cast(1 as bit))
        )

    3. Contains

    var expr = from p in context.Products
                where new string[] 
                { 
                    "LINQ to Object",
                    "LINQ to ADO.NET", 
                    "LINQ to XML" 
                }
                .Contains(p.ProductName)
                select p;
    SELECT 
        [Extent1].[ProductID] AS [ProductID], 
        [Extent1].[CategoryID] AS [CategoryID], 
        [Extent1].[ProductName] AS [ProductName], 
        [Extent1].[UnitPrice] AS [UnitPrice], 
        [Extent1].[UnitsInStock] AS [UnitsInStock], 
        [Extent1].[Discontinued] AS [Discontinued]
        FROM [dbo].[Product] AS [Extent1]
        WHERE [Extent1].[ProductName] IN (N'LINQ to Object', N'LINQ to ADO.NET', N'LINQ to XML')
    var expr = from p in context.Products
                where !(new string[] 
                { 
                    "LINQ to Object",
                    "LINQ to ADO.NET", 
                    "LINQ to XML" 
                })
                .Contains(p.ProductName)
                select p;
    SELECT 
        [Extent1].[ProductID] AS [ProductID], 
        [Extent1].[CategoryID] AS [CategoryID], 
        [Extent1].[ProductName] AS [ProductName], 
        [Extent1].[UnitPrice] AS [UnitPrice], 
        [Extent1].[UnitsInStock] AS [UnitsInStock], 
        [Extent1].[Discontinued] AS [Discontinued]
        FROM [dbo].[Product] AS [Extent1]
        WHERE  NOT ([Extent1].[ProductName] IN (N'LINQ to Object', N'LINQ to ADO.NET', N'LINQ to XML'))
  • 相关阅读:
    select + 回调 + 事件循环
    进程间通信
    多进程复习
    concurrent.futures 使用及解析
    多线程复习 Rlock ,Condition,Semaphore
    生成器读取大文件应用
    VS远程调试与附加调试
    Linux后台有个systemd-r进程,占用5355等端口
    linux中 shell编程 判断服务是否运行
    使用Keepalived实现linux高可用集群
  • 原文地址:https://www.cnblogs.com/libingql/p/4050500.html
Copyright © 2011-2022 走看看