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'))
  • 相关阅读:
    PHP 5 echo 和 print 语句
    MySQL存储过程-遍历游标的例子
    bzoj2554: Color
    win10 uwp 入门
    win10 uwp 入门
    win10 uwp 自定义控件 SplitViewItem
    win10 uwp 自定义控件 SplitViewItem
    win10 uwp ContentDialog 点确定不关闭
    win10 uwp ContentDialog 点确定不关闭
    win10 uwp smms图床
  • 原文地址:https://www.cnblogs.com/libingql/p/4050500.html
Copyright © 2011-2022 走看看