linq操作符:串联操作符
串联是一个将两个集合连接在一起的过程。在Linq中,这个过程通过Concat操作符实现。Concat操作符用于连接两个集合,生成一个新的集合。来看看Concat操作符的定义:
public static IEnumerable<TSource> Concat<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second)
从方法定义中可以看出:第二个参数为输入一个新的集合,与调用集合连接,生成并返回一个新的集合。
注意:
第一个集合和第二个集合的元素的类型必须是相同的。
请看下面的例子:
定义Category类,其类定义如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SeriesOperation
{
public class Category
{
public int Id { get; set; }
public string CategoryName { get; set; }
public DateTime CreateTime { get; set; }
}
}
然后在Main()方法中调用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SeriesOperation
{
class Program
{
static void Main(string[] args)
{
// 初始化数据
List<Category> listCategory = new List<Category>()
{
new Category(){ Id=,CategoryName="计算机",CreateTime=DateTime.Now.AddYears(-)},
new Category(){ Id=,CategoryName="文学",CreateTime=DateTime.Now.AddYears(-)},
new Category(){ Id=,CategoryName="高校教材",CreateTime=DateTime.Now.AddMonths(-)},
new Category(){ Id=,CategoryName="心理学",CreateTime=DateTime.Now.AddMonths(-)}
}; List<Category> list = new List<Category>()
{
new Category(){ Id=,CategoryName="管理类",CreateTime=DateTime.Now.AddDays(-)},
new Category(){ Id=,CategoryName="金融学",CreateTime=DateTime.Now.AddYears(-)}
}; // 查询表达式
var newListExpress = (from c in listCategory select c).Concat(from p in list select p);
Console.WriteLine("查询表达式输出:");
foreach (var item in newListExpress)
{
Console.WriteLine($"Id:{item.Id},CategoryName:{item.CategoryName},CreateTime:{item.CreateTime}");
} var newList = listCategory.Concat(list);
Console.WriteLine("方法语法输出:");
foreach (var item in newList)
{
Console.WriteLine($"Id:{item.Id},CategoryName:{item.CategoryName},CreateTime:{item.CreateTime}");
} Console.ReadKey();
}
}
}
结果:

如何输出不同集合中相同类型的元素呢?看下面的例子:
在定义Product类,其定义如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SeriesOperation
{
public class Product
{
public int Id { get; set; }
public int CategoryId { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public DateTime CreateTime { get; set; }
}
}
Category类中的CategoryName和Product类中的Name都是string类型的,在下面的例子中输出Category中的CategoryName和Product中的Name。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace SeriesOperation
{
class Program
{
static void Main(string[] args)
{
// 初始化数据
List<Category> listCategory = new List<Category>()
{
new Category(){ Id=,CategoryName="计算机",CreateTime=DateTime.Now.AddYears(-)},
new Category(){ Id=,CategoryName="文学",CreateTime=DateTime.Now.AddYears(-)},
new Category(){ Id=,CategoryName="高校教材",CreateTime=DateTime.Now.AddMonths(-)},
new Category(){ Id=,CategoryName="心理学",CreateTime=DateTime.Now.AddMonths(-)}
};
List<Product> listProduct = new List<Product>()
{
new Product(){Id=,CategoryId=, Name="C#高级编程第10版", Price=100.67,CreateTime=DateTime.Now},
new Product(){Id=,CategoryId=, Name="Redis开发和运维", Price=69.9,CreateTime=DateTime.Now.AddDays(-)},
new Product(){Id=,CategoryId=, Name="活着", Price=,CreateTime=DateTime.Now.AddMonths(-)},
new Product(){Id=,CategoryId=, Name="高等数学", Price=,CreateTime=DateTime.Now.AddMonths(-)},
new Product(){Id=,CategoryId=, Name="国家宝藏", Price=52.8,CreateTime=DateTime.Now.AddMonths(-)}
}; // 查询表达式
var newList = (from p in listProduct
select p.Name).Concat(from c in listCategory select c.CategoryName);
Console.WriteLine("查询表达式输出:");
foreach (var item in newList)
{
Console.WriteLine(item);
}
Console.WriteLine("*************************");
// 方法语法
var newListFun = listProduct.Select(p => p.Name).Concat(listCategory.Select(c => c.CategoryName));
Console.WriteLine("方法语法输出:");
foreach (var item in newListFun)
{
Console.WriteLine(item);
} Console.ReadKey();
}
}
}
结果:

linq操作符:串联操作符的更多相关文章
- LINQ标准查询操作符详解(转)
一. 关于LINQ LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders ...
- LINQ标准查询操作符(二)——Join、GroupJoin、GroupBy、Concat、
四.联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作.这两个数据源对象通过一个共同的值或者属性进行关联. LINQ有两个联接操作符:Join和GroupJoin. 1. J ...
- Linq 标准查询操作符三
本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...
- LINQ 标准查询操作符
本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰 ...
- Linq学习之操作符
一.环境搭建 下面将逐步搭建我们学习的环境,这个环境不仅仅是这次需要使用,以后的教程一样需要使用这个环境.所以请大家务必按照 搭建这里的环境否则会影响你后面的学习. 我们用到的几张表 通知消息表: 用 ...
- LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat
七.聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值.最大值等.共有7种LINQ聚合查询操作符:Aggregate.Average.Count.LongCount.Ma ...
- Linq标准查询操作符
Linq的出现让代码简洁了不少.之前在项目中基本都在使用它,但是没有完整的整理过,今天借这个周末,将其进行整理,方便后期对其的使用.Linq的操作可以分为聚合,连接,转换,元素操作符,相等操作,生成 ...
- LINQ标准查询操作符(四) —AsEnumerable,Cast,OfType,ToArray,ToDictionary,ToList,ToLookup,First,Last,ElementAt
十.转换操作符 转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以“As”开头的转换方法可更改源集合的静态类型但不枚举(延迟加载)此源集合.名称以“To”开头的方法可枚举(即时加载)源集合并 ...
- LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse
一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: //查询语法 var query = fro ...
- Kotlin——最详细的操作符与操作符重载详解(上)
本篇文章为大家详细的介绍Koltin特有的操作符重载.或许对于有编程经验的朋友来说,操作符这个词绝对不陌生,就算没有任何编辑基础的朋友,数学中的算数运算符也绝不陌生.例如(+.-.*./.>.& ...
随机推荐
- android辅助开发工具包介绍
辅助开发工具包(ADK)是为硬件制造商和业余爱好者准备的参考实现.硬件制造商和业余爱好者可以使用此工具包作为开发Android辅助设备的起点.每一个ADK发行版都将提供源代码和硬件规格,以使整个辅助设 ...
- Android build.gradle
apply plugin: 'com.android.application' android { /*编译版本 , 因此我们强烈推荐总是使用最新的 SDK 进行编译 targetSdkVersion ...
- c 常见错误
."c" not an argument in function sum 该标识符不是函数的参数2.array bounds missing ] in function main ...
- 求最大连续和——dp
输入一组整数,求出这组数字子序列和中最大值.也就是仅仅要求出最大子序列的和,不必求出最大的那个序列. 比如: 序列:-2 11 -4 13 -5 -2,则最大子序列和为20. 序列:-6 2 4 -7 ...
- js正则表达式实现手机号码,密码正则验证
手机号码,密码正则验证. 分享下javascript中正则表达式进行的格式验证,常用的有手机号码,密码等. /** * 手机号码 * 移动:134[0-8],135,136,137,138,139,1 ...
- java 时间间隔天数
public static Long getDaysBetween(long startDate, long endDate) { Calendar fromCalendar = Calendar.g ...
- spring(四) 手动整合web项目(SSH)
清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...
- mysql protocol
http://hutaow.com/blog/2013/11/06/mysql-protocol-analysis/ https://dev.mysql.com/doc/internals/en/cl ...
- Natural Language Processing 课程,文章,论文
CS224n: Natural Language Processing with Deep Learning http://cs224d.stanford.edu/syllabus.html http ...
- Sql Server 2008 清除日志
--在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式. USE [master] GO ALTER DATABASE SSCDZ SET RECOVERY SIMPLE ...