Linq常见 *** 作示例

Linq常见 *** 作示例,第1张

概述Linq常见 *** 作示例

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

static voID Deferredquery()   {       var names = new List<string> { "Nino","Alberto","Juan","Mike","Phil" };         var namesWithJ = from n in names                        where n.StartsWith("J")                        orderby n                        select n;         Console.Writeline("First iteration");       foreach (string name in namesWithJ)       {           Console.Writeline(name);       }       Console.Writeline();         names.Add("John");       names.Add("Jim");       names.Add("Jack");       names.Add("Denny");         Console.Writeline("Second iteration");       foreach (string name in namesWithJ)       {           Console.Writeline(name);       }         /*                       First iteration          Juan          second iteration          Jack          Jim          John          Juan                                     */     }       //如查询出来自巴西的所有世界冠军,并按照夺冠次数排序   static voID liNQquery()   {       var query = from r in Formula1.GetChampions()                   where r.Country == "Brazil"                   orderby r.Wins descending                   select r;         foreach (var r in query)       {           Console.Writeline("{0:A}",r);       }   }     //Zip合并功能   static voID ZipOperation()   {       var racernames = from r in Formula1.GetChampions()                        where r.Country == "Italy"                        orderby r.Wins descending                        select new                        {                            name = r.Firstname + " " + r.Lastname                        };         var racernamesAndStarts = from r in Formula1.GetChampions()                              where r.Country == "Italy"                              orderby r.Wins descending                              select new                               {                                  Lastname = r.Lastname,Starts = r.Starts                              };           //var racers = racernames.Zip(racernamesAndStarts,(first,second) => first.name + ",starts: " + second.Starts);       //foreach (var r in racers)       //{       //    Console.Writeline(r);       //}     }     //根据赛手获得一级方程式冠军的次数,列出最成功的国家   static voID Aggregate2()   {       var countrIEs = (from c in                            from r in Formula1.GetChampions()                            group r by r.Country into c                            select new                            {                                Country = c.Key,Wins = (from r1 in c                                        select r1.Wins).Sum()                            }                        orderby c.Wins descending,c.Country                        select c).Take(5);         foreach (var country in countrIEs)       {           Console.Writeline("{0} {1}",country.Country,country.Wins);       }     }     //筛选赛手,只返回获得冠军次数超过3次的赛手   static voID Aggregate()   {       var query = from r in Formula1.GetChampions()                   where r.Years.Count() > 3                   orderby r.Years.Count() descending                   select new                   {                       name = r.Firstname + " " + r.Lastname,TimesChampion = r.Years.Count()                   };         foreach (var r in query)       {           Console.Writeline("{0} {1}",r.name,r.TimesChampion);       }   }     //linq分页显示   static voID Partitioning()   {       int pageSize = 5;         int numberPages = (int)Math.Ceiling(Formula1.GetChampions().Count() /             (double)pageSize);         for (int page = 0; page < numberPages; page++)       {           Console.Writeline("Page {0}",page);             var racers =              (from r in Formula1.GetChampions()               orderby r.Lastname               select r.Firstname + " " + r.Lastname).              Skip(page * pageSize).Take(pageSize);             foreach (var name in racers)           {               Console.Writeline(name);           }           Console.Writeline();       }     }     //有驾驶法拉利和迈凯轮的冠军,集合交集   static voID Setoperations()   {       Func<string,IEnumerable<Racer>> racersByCar =           car => from r in Formula1.GetChampions()                  from c in r.Cars                  where c == car                  orderby r.Lastname                  select r;         Console.Writeline("World champion with Ferrari and McLaren");       foreach (var racer in racersByCar("Ferrari").Intersect(racersByCar("McLaren")))       {           Console.Writeline(racer);       }   }     //列出每年的赛手冠军和车队冠军   static voID Join()   {       var racers = from r in Formula1.GetChampions()                    from y in r.Years                    where y > 2003                    select new                    {                        Year = y,name = r.Firstname + " " + r.Lastname                    };         var teams = from t in                       Formula1.GetContructorChampions()                   from y in t.Years                   where y > 2003                   select new                   {                       Year = y,name = t.name                   };         var racersAndTeams =             from r in racers             join t in teams on r.Year equals t.Year             select new             {                 Year = r.Year,Racer = r.name,Team = t.name             };         Console.Writeline("Year  Champion " + "Constructor Title");       foreach (var item in racersAndTeams)       {           Console.Writeline("{0}: {1,-20} {2}",item.Year,item.Racer,item.Team);       }   }     //现在一级方程式冠军应按照国家分组,并列出一个国家的冠军数以及包含赛手名序列   static voID GrouPingWithnestedobjects()   {       var countrIEs = from r in Formula1.GetChampions()                       group r by r.Country into g                       orderby g.Count() descending,g.Key                       where g.Count() >= 2                       select new                       {                           Country = g.Key,Count = g.Count(),Racers = from r1 in g                                    orderby r1.Lastname                                    select r1.Firstname + " " + r1.Lastname                       };       foreach (var item in countrIEs)       {           Console.Writeline("{0,-10} {1}",item.Country,item.Count);           foreach (var name in item.Racers)           {               Console.Write("{0}; ",name);           }           Console.Writeline();       }     }     static voID GrouPing()   {       var countrIEs = from r in Formula1.GetChampions()                       group r by r.Country into g                       orderby g.Count() descending,Count = g.Count()                       };         foreach (var item in countrIEs)       {           Console.Writeline("{0,item.Count);       }     }     //显示驾驶法拉利的所有一级方程式冠军名字   static voID CompoundFrom()   {       var ferrarIDrivers = from r in Formula1.GetChampions()                            from c in r.Cars                            where c == "Ferrari"                            orderby r.Lastname                            select r.Firstname + " " + r.Lastname;         foreach (var racer in ferrarIDrivers)       {           Console.Writeline(racer);       }   }     static voID TypeFiltering()   {       object[] data = { "one",2,3,"four","five",6 };       var query = data.OfType<string>();       foreach (var s in query)       {           Console.Writeline(s);       }       /*          one          four          five                    */   }     //使用索引返回姓氏以A开头、索引为偶数的赛手   static voID IndexFiltering()   {       var racers = Formula1.GetChampions().               Where((r,index) => r.Lastname.StartsWith("A") && index % 2 != 0);       foreach (var r in racers)       {           Console.Writeline("{0:A}",r);       }     }     //找出赢得至少 15场比赛的巴西和奥地利赛手   static voID Filtering()   {       var racers = from r in Formula1.GetChampions()                    where r.Wins > 15 && (r.Country == "Brazil" || r.Country == "Austria")                    select r;         foreach (var r in racers)       {           Console.Writeline("{0:A}",r);       }     }     //取消linq并行 *** 作   static voID Cancellation()   {       const int arraySize = 100000000;       var data = new int[arraySize];       var r = new Random();       for (int i = 0; i < arraySize; i++)       {           data[i] = r.Next(40);       }         var cts = new CancellationTokenSource();         new Thread(() =>           {               try               {                   var sum = (from x in data.AsParallel().WithCancellation(cts.Token)                              where x < 80                              select x).Sum();                   Console.Writeline("query finished,sum: {0}",sum);               }               catch (OperationCanceledException ex)               {                   Console.Writeline(ex.Message);               }           }).Start();           Console.Writeline("query started");       Console.Write("cancel? ");       int input = Console.Read();       if (input == 'Y' || input == 'y')       {           // cancel!           cts.Cancel();       }   }     //linq 并行 *** 作   static voID IntroParallel()   {       const int arraySize = 100000000;       var data = new int[arraySize];       var r = new Random();       for (int i = 0; i < arraySize; i++)    data[i] = r.Next(40);         Stopwatch watch = new Stopwatch();       watch.Start();              var q1 = (from x in Partitioner.Create(data).AsParallel()                 where x < 80                select x).Sum();       watch.Stop();       Console.Writeline(watch.ElapsedMilliseconds);   }  

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的Linq常见 *** 作示例全部内容,希望文章能够帮你解决Linq常见 *** 作示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1237791.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存