• 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'))
  • 相关阅读:
    如何快速发现网站恶意镜像与网页劫持?
    最牛「CSRF防护」,带你进入大虾们的圈子!
    安全无小事:如何给企业用户数据上把锁?
    PHP 7 探针的安装与测试
    如何使用 Docker、ECS、Terraform 重建基础架构?
    应用安全技术趋势之 Top 5
    第77节:Java中的事务和数据库连接池和DBUtiles
    第76节:Java中的基础知识
    第76节:Java中的基础知识
    第75节:Java的中的JSP,EL和JSTL
  • 原文地址:https://www.cnblogs.com/libingql/p/4050500.html
Copyright © 2020-2023  润新知