Linq的一些应用1

Posted SpeedHorse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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属性

以上是关于Linq的一些应用1的主要内容,如果未能解决你的问题,请参考以下文章

Linq的一些应用1

并行LINQ PLinq

当 ViewPager 中的片段出现和消失时如何执行一些代码

当我从 Azure 函数而不是从控制台应用程序运行 LINQ 查询时,它会失败

一些恶心的代码片段

java代码在片段活动中不起作用