zoukankan      html  css  js  c++  java
  • Linq的一些应用1

    一、Where的筛选功能

    1、索引查询。where重载方法第一个参数查询对象,第二个参数计数器的索引,如:

    找寻姓氏以x开头,索引为偶数的结果。

                var races = Formulal.GetChampins().Where((r, index) => r.LastName.StartsWith("x") && index % 2 != 0);
                foreach (var r in races)
                {
                    Console.WriteLine("{0:A}",r);
                }

    2、类型筛选

    可以选晒数组中不同类型的对象,如string和into类型。

                Object[] data = { "one", 2, 3, "four", "five", 6 };
                var query = data.OfType<string>();//筛选string类型的对象
                foreach (var q in query)
                {
                    Console.WriteLine(q);
                }

    二、复合from子句

    第二个子句访问第一个子句返回的对象

                var ferrariDrivers = from r in Formulal.GetChampins()
                                     from c in r.Cars
                                     where c == "Ferrari"
                                     orderby r.LastName
                                     select r.FirstName + "" + r.LastName;
                foreach (var r in ferrariDrivers)
                {
                    Console.WriteLine(r);
                }

    复合子句可以用SelectMany方法搞定。

                var ferrariDrivers = Formulal.GetChampins().SelectMany(r => r.Cars, (r, c) => new { Racer = r, Car = c })
                    .Where(r => r.Car == "Ferrari").OrderBy(r => r.Racer.LastName)
                    .Select(r => r.Racer.FirstName + "" + r.Racer.LastName);
                foreach (var r in ferrariDrivers)
                {
                    Console.WriteLine(r);
                }

    SelectMany方法定义如下:

    public static IEnumerable<TResult> SelectMany<TSource,Tcollection,TResult>
    (this IEnumerable<TSource> source,Func<TSource,IEnumerable<Tcollection>> collectionSelector,Func<TSource,Tcollection,TResult> resultSelector)

    第一个参数隐式参数,接受Racer对象序列。第二个参数是collectionSelector委托,定义内部序列,如r=>r.Cars。第三个参数是一个委托,创建一个匿名类型,该对象含有Racer和Cars属性

  • 相关阅读:
    中文句子相似度之計算與應用
    《The Elder Scrolls V: Skyrim》百般冷门却强力职业
    《老滚5 》买房、娶老婆详尽攻略
    关于组播239.255.255.250
    Windows事件ID大全
    事件查看器常见ID代码解释
    Windows路由表详解
    两种动态加载JavaScript文件的方法
    80后的你们还记得这些游戏吗
    谷歌和HTTPS
  • 原文地址:https://www.cnblogs.com/GallopingSnail/p/5894752.html
Copyright © 2011-2022 走看看