码迷,mamicode.com
首页 > 其他好文 > 详细

Linq学习(四)-联合查询

时间:2016-01-31 02:48:13      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

一、本将主要介绍

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

Linq学习(四)-联合查询

标签:

原文地址:http://www.cnblogs.com/2star/p/5172334.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!