zoukankan      html  css  js  c++  java
  • Linq学习(四)-联合查询

    一、本将主要介绍

    Union、Concat、Intersect、Except的使用操作

    1.Union

    查询昵称中带有Friend和带有Lee的用户

    Linq

    (from a in Blog_Users where a.NickName.Contains("Lee") select a)
    .Union
    (from a in Blog_Users where a.NickName.Contains("Friend") select a)

    sql

    -- Region Parameters
    DECLARE @p0 NVarChar(1000) = '%Lee%'
    DECLARE @p1 NVarChar(1000) = '%Friend%'
    -- EndRegion
    SELECT [t2].[UserId], [t2].[NickName], [t2].[CreateTime]
    FROM (
        SELECT [t0].[UserId], [t0].[NickName], [t0].[CreateTime]
        FROM [Blog_User] AS [t0]
        WHERE [t0].[NickName] LIKE @p0
        UNION
        SELECT [t1].[UserId], [t1].[NickName], [t1].[CreateTime]
        FROM [Blog_User] AS [t1]
        WHERE [t1].[NickName] LIKE @p1
        ) AS [t2]

    Lambda

    Blog_Users
       .Where (a => a.NickName.Contains ("Lee"))
       .Union (
          Blog_Users
             .Where (a => a.NickName.Contains ("Friend"))
       )

    2.Concat

    查询昵称中带有Friend和昵称中带有Lee的用户,相同的用户信息不过滤

    Linq to sql

    (from a in Blog_Users where a.NickName.Contains("Friend") select a)
    .Concat
    (from a in Blog_Users where a.NickName.Contains("Lee") select a)

    sql

    -- Region Parameters
    DECLARE @p0 NVarChar(1000) = '%Friend%'
    DECLARE @p1 NVarChar(1000) = '%Lee%'
    -- EndRegion
    SELECT [t2].[UserId], [t2].[NickName], [t2].[CreateTime]
    FROM (
        SELECT [t0].[UserId], [t0].[NickName], [t0].[CreateTime]
        FROM [Blog_User] AS [t0]
        WHERE [t0].[NickName] LIKE @p0
        UNION ALL
        SELECT [t1].[UserId], [t1].[NickName], [t1].[CreateTime]
        FROM [Blog_User] AS [t1]
        WHERE [t1].[NickName] LIKE @p1
        ) AS [t2]

    Lambda

    Blog_Users
       .Where (a => a.NickName.Contains ("Friend"))
       .Concat (
          Blog_Users
             .Where (a => a.NickName.Contains ("Lee"))
       )

    3.Intersect(交集)

    查询昵称中带有Friend的,且昵称中带有Lee的用户

    Linq to sql

    (from a in Blog_Users where a.NickName.Contains("Friend") select a)
    .Intersect
    (from a in Blog_Users where a.NickName.Contains("Lee") select a)

    sql

    -- Region Parameters
    DECLARE @p0 NVarChar(1000) = '%Lee%'
    DECLARE @p1 NVarChar(1000) = '%Friend%'
    -- EndRegion
    SELECT DISTINCT [t0].[UserId], [t0].[NickName], [t0].[CreateTime]
    FROM [Blog_User] AS [t0]
    WHERE (EXISTS(
        SELECT NULL AS [EMPTY]
        FROM [Blog_User] AS [t1]
        WHERE ([t0].[UserId] = [t1].[UserId]) AND ([t1].[NickName] LIKE @p0)
        )) AND ([t0].[NickName] LIKE @p1)

    Lambda

    Blog_Users
       .Where (a => a.NickName.Contains ("Friend"))
       .Intersect (
          Blog_Users
             .Where (a => a.NickName.Contains ("Lee"))
       )

    4.Except(排除交集)

    查询昵称中带有Friend,并从中删除昵称中带有Zhao的用户

    Linq to sql

    (from a in Blog_Users where a.NickName.Contains("Friend") select a)
    .Except
    (from a in Blog_Users where a.NickName.Contains("Zhao") select a)

    sql

    -- Region Parameters
    DECLARE @p0 NVarChar(1000) = '%Zhao%'
    DECLARE @p1 NVarChar(1000) = '%Friend%'
    -- EndRegion
    SELECT DISTINCT [t0].[UserId], [t0].[NickName], [t0].[CreateTime]
    FROM [Blog_User] AS [t0]
    WHERE (NOT (EXISTS(
        SELECT NULL AS [EMPTY]
        FROM [Blog_User] AS [t1]
        WHERE ([t0].[UserId] = [t1].[UserId]) AND ([t1].[NickName] LIKE @p0)
        ))) AND ([t0].[NickName] LIKE @p1)

    Lambda

    Blog_Users
       .Where (a => a.NickName.Contains ("Friend"))
       .Except (
          Blog_Users
             .Where (a => a.NickName.Contains ("Zhao"))
       )
    更多精彩内容请看:http://www.cnblogs.com/2star
  • 相关阅读:
    关于苹果IPhone/Ipad(IOS)开发者证书申请及安装、真机调试、发布的参考文章
    vs 关闭警告
    真机测试及布署Code Sign error问题总结
    在 Win32 Application 和 Win32 Console Application 中使用 MFC
    获取应用程序路径的区别
    js日期控件
    SQL SERVER 企业管理器 MMC 无法创建管理单元
    进程查看两利器
    用PowerDesigner逆向数据库工程时”Unable to list the table"错误的解决方法
    SQL 附加无日志数据库
  • 原文地址:https://www.cnblogs.com/kimisme/p/5172334.html
Copyright © 2011-2022 走看看