• Linq To Object


    •   主要的查询操作方法

    Family

    Query operators

    Filtering

    OfType、Where

    Projection

    Select、SelectMany

    Partitioning

    Skip、SkipWhile、Take、TakeWhile

    Join

    GroupJoin、Join

    Concatenation

    Concat

    Ordering

    OrderBy、OrderByDescending、Reverse、ThenBy、ThenByDescending

    Grouping

    GroupBy、ToLookup

    Set

    Distinct、Except、Intersect、Union

    Conversion

    AsEnumerable、AsQueryable、Cast、ToArray、ToDictionary、ToList

    Equality

    SequenceEqual

    Element

    ElementAt、ElementOrDefault、First、FirstOrDefault、Last、LastOrDefault、Single、SingleOrDefault

    Generation

    DefaultIfEmpty、Empty、Range、Repeat

    Quantifiers

    All、Any、Contains

    Aggregation

    Aggregate、Average、Count、LongCount、Max、Min、Sum       

    • Filtering【过滤】

        筛选指将结果集限制为只包含那些满足指定条件的元素的操作,下面的示例使用Where子句来从数组中筛选那些具有特定长度的字符串。

    string[] words = { "the", "quick", "brown", "fox", "jumps" };
    IEnumerable<string> query = from word in words
    where word.Length == 3
    select word;
    • Projection Operations【投影】

        投影是指将对象转换为一种新形式的操作,该操作通常值包含那些随后将要使用的属性。通过使用投影,可以构建依据每个对象生成的新类型。你可以映射属性,并对该属性执行数学函数。还可以在不更改原始对象的情况下映射该对象,下面的示例中的Select子句来映射字符串列表中的每个字符串的第一个字母。

    List<string> words = new List<string>() { "an", "apple", "a", "day" };
    var query = from word in words
    select word.Substring(0, 1);

        SelectMany,下面的示例中使用多个from子句或from子句来映射字符串列表中每个字符串中的每个单词。

    List<string> phrases = new List<string>() { "an apple a day", "the quick brown fox" };
    var query = from phrase in phrases
    from word in phrase.Split(' ')
    select word;

        Select与SelectMany的比较:

    • Partitioning【数据分区】

        LINQ中的分区指的是在不重新排列元素的情况下,将输入序列划分为两部分,然后返回其中的一部分的操作。

    运算符名称

    说明

    Skip

    跳过序列中指定位置之前的元素

    SkipWhile

    基于谓词函数跳过元素,知道某元素不在满足条件

    Take

    提取序列中指定位置之前的元素

    TakeWhile

    基于谓词函数提取元素,直到某元素不在满足条件

        

       

         下面的代码示例中使用Skip子句来跳过字符串数组中的前四个字符串,然后返回此数组中剩余的字符串

    string[] words = { "an", "apple", "a", "day", "keeps", "the", "doctor", "away" };
    var query = words.Skip(4);

         下面的代码示例中使用SkipWhile子句来跳过数组中字符串的首字母为”a”的字符串。返回此数组中的剩余字符串

    string[] words = { "an", "apple", "a", "day", "keeps", "the", "doctor", "away" };
    var query = words.SkipWhile(u => u.Substring(0, 1) == "a");

        下面示例使用Take子句来返回字符串数组中的前两个字符串

    string[] words = { "an", "apple", "a", "day", "keeps", "the", "doctor", "away" };
    var query = words.Take(2);

       下面示例中使用TakeWhile子句来返回数组中的字符串长度小于或等于5的字符串

    string[] words = { "an", "apple", "a", "day", "keeps", "the", "doctor", "away" }; 
    var query = words.TakeWhile(u => u.Length < 6);
    •     Grouping【数据分区】

    方法名

    说明

    查询表达式语法

    GroupBy

    对共享公共属性的元素进行分组。每个组都有一个IGrouping<TKey,TElement>对象表示

    Group……by

    Group……by……into

    ToLookup

    根据键选择器函数将元素插入到Lookup<Tkey,TElement>中

        GroupBy:

        输出结果:

        Lookup<TKey,TElement>表示映射到一个或多个值得各个键的集合

        Lookup<TKey,TElement>类似于Dictionary<TKey,TValue>。不同之处在于:Dictionary<TKey,TValue>将各个键映射到单个值,而Lookup<TKey,TElement>将各个键映射到值得集合。

        输出结果:

    • Set运算

        LINQ中的Set操作是指根据相同或不同集合中是否存在等效元素来生成结果集的查询操作

    方法名

    说明

    Distinct

    从集合移除重复值

    Except

    返回差集,差集是指位于一个集合单步位于另外一个集合的元素

    Intersect

    返回交集

    Union

    返回并集

    •  Element【元素操作】

        元素操作从一个序列返回单个特定元素

    方法名

    说明

    ElementAt

    返回集合中指定索引处得元素

    ElementAtOrDefault

    返回集合中指定索引处得元素;如果超出范围,则返回默认值

    First

    返回集合中的第一个元素或满足条件的第一个元素

    FirstOrDefault

    返回集合中的第一个元素或满足条件的第一个元素。如果没有这样的元素,则返回默认值

    Last

    返回集合中的最后一个元素或满足条件的最后一个元素

    LastOrDefault

    返回集合中的最后一个元素或满足条件的最后一个元素。如果没有这样的元素,则返回默认值

    Single

    返回集合中的唯一元素或满足条件的唯一元素

    SingleOrDefault

    返回集合中的唯一元素或满足条件的唯一元素。如果没有这样的元素或集合不是正好包含一个元素,则返回默认值

    • Aggregation【聚合操作】

    方法名

    说明

    Aggregate

    对集合值执行自定义聚合运算

    Average

    计算值集合的平均值

    Count

    对集合中的元素进行计数,还可以仅满足某一谓词函数的元素进行计数

    Longcount

    对大型集合中的元素进行计数,还可以仅满足某一谓词的元素进行计数

    Max

    确定集合的最大值

    Min

    确定集合中的最小值

    Sum

    计算集合中值得总和

       

        Aggregate:

        输出结果:

    • Concatenation【串联运算】

        Concat:

    • Converting Data Types

    方法名

    说明

    AsEnumerable

    返回类型为IEnumerable<T>的输入

    AsQueryable

    将IEnumerable转换为(泛型)IQueryable

    Cast

    将集合的元素强制转换为指定的类型

    OfType

    根据值强制转换为指定类型的能力筛选值

    ToArray

    ToDictionary

    ToList

    ToLookUp

    备注:此文参考了MSDN

  • 相关阅读:
    Android-通过SlidingPaneLayout高仿微信6.2最新版手势滑动返回(一)
    B树
    nyoj448 寻找最大数
    IT痴汉的工作现状22-由Dalvik虚拟机引发的口水战
    POJ 3221 Diamond Puzzle.
    CMDBuild安装及webservice接口的获取
    安卓dex 文件结构简要说明
    安装RPM包或者安装源代码包
    Java程序性能优化技巧
    [Sqlite]--&gt;数据迁移备份--从低版本号3.6.2到高版本号3.8.6
  • 原文地址:https://www.cnblogs.com/PerfectSoft/p/2377204.html
Copyright © 2020-2023  润新知