LINQ系列:LINQ to SQL Concat/Union

1. Concat

  单列Concat

var expr = (from p in context.Products
            select p.ProductName)
            .Concat(
            from c in context.Categories
            select c.CategoryName
            );
foreach (var item in expr)
{
    Console.WriteLine(item);
}
var expr = context.Products
    .Select(p => p.ProductName)
    .Concat(
    context.Categories
    .Select(c => c.CategoryName)
    );
SELECT
    [UnionAll1].[ProductName] AS [C1]
    FROM  (SELECT
        [Extent1].[ProductName] AS [ProductName]
        FROM [dbo].[Product] AS [Extent1]
    UNION ALL
        SELECT
        [Extent2].[CategoryName] AS [CategoryName]
        FROM [dbo].[Category] AS [Extent2]) AS [UnionAll1]

  多列Concat

var expr = context.Products
    .Select(p => new
    {
        p.ProductID,
        p.ProductName
    })
    .Concat(
    context.Categories
    .Select(c => new
    {
        ProductID = c.CategoryID,
        ProductName = c.CategoryName
    })
    );
SELECT
    [UnionAll1].[ProductID] AS [C1],
    [UnionAll1].[ProductID1] AS [C2],
    [UnionAll1].[ProductName] AS [C3]
    FROM  (SELECT
        [Extent1].[ProductID] AS [ProductID],
        [Extent1].[ProductID] AS [ProductID1],
        [Extent1].[ProductName] AS [ProductName]
        FROM [dbo].[Product] AS [Extent1]
    UNION ALL
        SELECT
        [Extent2].[CategoryID] AS [CategoryID],
        [Extent2].[CategoryID] AS [CategoryID1],
        [Extent2].[CategoryName] AS [CategoryName]
        FROM [dbo].[Category] AS [Extent2]) AS [UnionAll1]

2. Union

var expr = context.Products
    .Select(p => p.ProductName)
    .Union(
    context.Categories
    .Select(c => c.CategoryName)
    );
SELECT
    [Distinct1].[C1] AS [C1]
    FROM ( SELECT DISTINCT
        [UnionAll1].[ProductName] AS [C1]
        FROM  (SELECT
            [Extent1].[ProductName] AS [ProductName]
            FROM [dbo].[Product] AS [Extent1]
        UNION ALL
            SELECT
            [Extent2].[CategoryName] AS [CategoryName]
            FROM [dbo].[Category] AS [Extent2]) AS [UnionAll1]
    )  AS [Distinct1]
时间: 2024-10-11 11:38:06

LINQ系列:LINQ to SQL Concat/Union的相关文章

LINQ to SQL语句Concat/Union/Intersect/Except--2017年2月22日

Concat/Union/Intersect/Except操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db.Customers select c.Phone ).Concat( from c in db.Customers select c.Fax ).Concat( from e in db.Employees select e.Home

LINQ to SQL语句(8)之Concat/Union/Intersect/Except

Concat/Union/Intersect/Except操作 适用场景:对两个集合的处理,例 如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接 不同的集合,不会自动过滤相同项:延迟. 1.简单形式: var q = ( from c in db.Customers select c.Phone ).Concat( from c in db.Customers select c.Fax ).Concat( from e in db.Employees select e.Ho

Linq之Linq to Sql

目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍linq to sql的内容.个人觉得linq to sql在实际开发中在中小型项目中用的比较多,在中小型项目用ef或者nhibernate这些orm确实有点重量级.Linq to Sql提供了丰富的功能,完全可以满足日常数据访问的需求.使用方法也非常简单.灵活. 系列文章 Linq之Lambda表达

SQL 提示介绍 hash/merge/concat union

查询提示一直是个很有争议的东西,因为他影响了sql server 自己选择执行计划.很多人在问是否应该使用查询提示的时候一般会被告知慎用或不要使用...但是个人认为善用提示在不修改语句的条件下,是常用手段.另外如果你是一个公司的dba 并且你对你所维护的数据库了如指掌,对业务也有相当深刻的了解那么查询提示也是你的一把利器. 但是,你所应用的提示是在现在的场景中基于现有的环境下,相对是一个好的方式,不能确保你所给予的提示永久有效,并且随着时间推移,数据量的变更,你所加的提示可能成为噩梦.所以没有充

Linq语法详细(三种方式:linq、Lambda、SQL语法)

三种方式:linq.Lambda.SQL语法 1.简单的linq语法 //1 var ss = from r in db.Am_recProScheme select r; //2 var ss1 = db.Am_recProScheme; //3 string sssql = "select * from Am_recProScheme"; 2.带where的查询 //1 var ss = from r in db.Am_recProScheme where r.rpId >

Linq系列

LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分

Linq技术四:动态Linq技术 -- Linq.Expressions

前面介绍了Linq的三个方面应用:Linq to SQL, Linq to XML和Linq to Object,这篇介绍一下动态Linq的实现方式及应用场景. 命名空间: System.Linq; System.Linq.Expressions; 应用Linq的时候,我们都知道只需要Lambda表达式就行,但有些场景仅仅只使用Data Model的字段名操作是不够的或者不方便的. 场景1:假设我们需要拼接Where条件进行查询,一种方式可以拼接IQueryable的表达式.但我想像写SQL语句

Linq之Linq to XML

目录 写在前面 系列文章 linq to xml 总结 写在前面 在很多情况下,都可以见到使用xml的影子.例如,在 Web 上,在配置文件.Microsoft Office Word 文件(将word文档另存为xml文件,这也提供了一种通过操作xml,操作word的一种方式)以及数据库中,都可以看到 XML.而linq to xml提供了一种操作xml更便捷的方式. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 Linq之隐式类型.自动属性.初始化器.匿名类 Li

SCCM 2012 R2实战系列之一:SQL安装

大家好,从今天开始跟大家一起分享自己学习SCCM 2012 R2的一些心得和具体的部署配置,希望能帮到大家.由于SCCM部署的步骤比较复杂,内容也比较多,所以我把SCCM整个部署过程分为以下三个章节: l SQL Server 2012 SP1的安装 l SCCM安装前的准备工作 l SCCM 主站点的部署 1.1 实验拓扑图: 下面是本次部署的一个拓扑图,所有操作系统均使用Windows Server 2012 R2 Datacenter版本 1.2 域环境的准备 微软的很多产品都是基于域环境