1,Take 方法

Take方法用于从一个序列的开头返回指定数量的元素。
string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

//直接输出前3个元素
Console.WriteLine("Take方法直接输出前3个元素");
foreach (var name in names.Take(3))
{
Console.WriteLine(name);
}
var query = from n in names
where n.Length == 2
select n;
Console.WriteLine("\nTake方法输出查询结果的前1个元素");
foreach (var s in query.Take(1))
{
Console.WriteLine(s);
}

2,TakeWhile 方法

TakeWhile方法获取序列中从开头起符合条件的元素,直到遇到不符合条件的元素为止的所有元素。条件代理部分有两种形
式:

Func<TSource, bool> predicate

Func<TSource, int, bool> predicate 第二个参数是元素的索引

注意:当条件为假时,就停止了,后面的元素不会输出。

string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

//输出名字小于4个字的元素
var takeNames = names.TakeWhile(n => n.Length < 4);
foreach (var name in takeNames)
{
Console.WriteLine(name);
}
Console.WriteLine("\nTakeWhile 带索引参数");
//输出名字字数小于等于4 并且索引小于4的元素
foreach (var name in names.TakeWhile((n, i) => n.Length <= 4 && i < 4))
{
Console.WriteLine(name);
}

3,Skip 方法

Skip方法用于跳过序列中指定个数的元素
string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

//跳过前3个元素
Console.WriteLine("Take方法跳过前3个元素");
foreach (var name in names.Skip(3))
{
Console.WriteLine(name);
}
var query = from n in names
where n.Length == 2
select n;
Console.WriteLine("\nTake方法跳过查询结果的前1个元素");
foreach (var s in query.Skip(1))
{
Console.WriteLine(s);
}

4,SkipWhile 方法

SkipWhile 方法用于只要满足指定的条件,就跳过序列中得元素。

注意:当遇到条件为假时,就停止跳越了,输出剩余的所有元素。
string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

Console.WriteLine("SkipWhile跳过名字为2个字的元素");
foreach (var name in names.SkipWhile(n => n.Length == 2))
{
Console.WriteLine(name);
}

Console.WriteLine("\nSkipWhile跳过名字小于4个字,并且索引小于2");
foreach (var s in names.SkipWhile((n, i) => n.Length < 4 && i < 2))
{
Console.WriteLine(s);
}

5,Reverse 方法
Reverse 方法用于反转序列中的元素。
string[] names = { "郭靖", "李莫愁", "欧阳晓晓", "黄蓉", "黄药师" };

foreach (var name in names.Reverse())
{
Console.WriteLine(name);
}

6,Distinct 方法

Distinct 方法用于去除重复元素。
string[] names = { "郭靖", "郭靖", "李莫愁", "欧阳晓晓", "欧阳晓晓", "黄蓉", "黄药师" };

Console.WriteLine("含有重复元素的数组");
foreach (var name in names)
{
Console.Write(name + " ");
}
Console.WriteLine("\n\n去除重复元素的数组");
foreach (var name in names.Distinct())
{
Console.Write(name + " ");
}

自定义IEqualityComparer<T>接口的相等比较器

public class MyEqualityComparer<T> : IEqualityComparer<T>
{
#region IEqualityComparer<T> 成员

public bool Equals(T x, T y)
{
string temp = x as string;
if (temp != null)
{
if (temp == "欧阳晓晓") //对"欧阳晓晓"不过滤
return false;
}
if (x.GetHashCode() == y.GetHashCode())
return true;
else
return false;
}

public int GetHashCode(T obj)
{
return obj.GetHashCode();
}

#endregion
}
private void DistinctDemo()
{
string[] names = { "郭靖", "郭靖", "李莫愁", "欧阳晓晓", "欧阳晓晓", "黄蓉", "黄药师" };

Console.WriteLine("含有重复元素的数组");
foreach (var name in names)
{
Console.Write(name + " ");
}
Console.WriteLine("\n\n去除重复元素的数组,实现自定义IEqualityComparer<T>");
foreach (var name in names.Distinct(new MyEqualityComparer<string>()))
{
Console.Write(name + " ");
}
}

对某个个例对象排除进行去重

LINQ 中常用函数使用: Take TakeWhile Skip SkipWhile Reverse Distinct的更多相关文章

  1. LoadRunner中常用函数参考手册

    基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request w ...

  2. Linq中常用语法

    using System;using System.Collections.Generic;using System.ComponentModel.Design;using System.Linq;u ...

  3. OpenCV图像处理中常用函数汇总(1)

    //俗话说:好记性不如烂笔头 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总: Mat srcImage = imread("C:/Us ...

  4. JavaScript中常用函数(入门级)(持续更新)

    本文中枫竹梦介绍一些JavaScript中入门级的常用函数,对于已经过了入门的童鞋可选择略过,都是一些非常实用的函数.如果发现什么问题,欢迎讨论. 问题列表 Q1: 设计一个函数repeatIt(st ...

  5. 5. openCV中常用函数学习

    一.前言 经过两个星期的努力,一边学习,一边写代码,初步完成了毕业论文系统的界面和一些基本功能,主要包括:1 数据的读写和显示,及相关的基本操作(放大.缩小和移动):2 样本数据的选择:3 数据归一化 ...

  6. javascript中常用函数汇总

    js中函数很多,在实际项目开发中,函数的应用可以很大程度上简化我们的代码,所以在此记下开发中js中常用的函数,增强记忆. 1.isNaN(X):函数用于检查其参数是否是非数字值. 如果 x 是特殊的非 ...

  7. SqlServer存储过程中常用函数及操作

    1.case语句 用于选择语句 SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN ...

  8. mysql中常用函数简介(不定时更新)

    常用函数version() 显示当前数据库版本database() 返回当前数据库名称user() 返回当前登录用户名inet_aton(IP) 返回IP地址的数值形式,为IP地址的数学计算做准备in ...

  9. SQL中常用函数

    SELECT CONVERT(varchar(100), GETDATE(), 23) AS  日期   结果:2017-01-05     select ISNULL(price,'0.0')   ...

随机推荐

  1. watch监控,对比新值和旧值做出相应判断

    数据变化的监控经常使用,我们可以先来看一个简单的数据变化监控的例子.例如天气预报的穿衣指数,它主要是根据温度来进行提示的,当然还有其它的,咱们就不考虑了. html <div id=" ...

  2. awk 基础入门

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  3. dRMT: Disaggregated Programmable Switching, SIGCOMM17

    Reference: dRMT, SIGCOMM 2017 今年的SIGCOMM17会议上,Cisco System和MIT的团队针对RMT模型现有的问题,合作发表了这篇"dRMT: Dis ...

  4. javascript - 内存空间

    也许很多人像我一样,觉得JS有垃圾回收机制,内存就可以不管了,以至于在全局作用域下定义了很多变量,自以为JS会自动回收,直到最近,看了阮一峰老师,关于javascript内存泄漏的文章时,才发现自己写 ...

  5. BOM - 浏览器API

     1,javascript   组成部分: 1.ECMAscript(核心标准):    定义了基本的语法,比如:if for 数组 字符串 ... 2.BOM  : 浏览器对象模型(Browser ...

  6. 理解 Redis(7) - Set 值

    unordered collection of unique strings.set值是唯一的字符串的无序集合, 把握住两个特点: 唯一, 无序. 清空所有的数据, 并清理显示界面: 127.0.0. ...

  7. PL/SQL Developer过期解决方法

    参考资料: plsql过期解决方法 plsql永久注册码适用个版本 方法一: 1.首先,登陆PL/SQL Developer,PL/SQL Developer要到期了 2.输入指令“regedit”打 ...

  8. 【bzoj】4538: [Hnoi2016]网络

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4538 维护一个数据结构支持对于一颗树的操作,需要支持: 1.对于树上的一条路径上的每个点上 ...

  9. 设计模式(三)Singleton Pattern单例设计模式

    1.饿汉式 public class SingletonDemo { private static SingletonDemo s=new SingletonDemo(); private Singl ...

  10. 学习笔记49—matlab FDR校正

    matlab自带函数mafdr,当ttest数较多时,可直接用[FDR, Q]=mafdr(P):但是Storey procedure在p值少于1000个时会崩溃,此时应改用BH FDR方法:mafd ...