LINQ 查询(2)

2022-06-23  本文已影响0人  Ritchie_Li

1. 类型筛选

          object[] data = { "one", 2, 4, "Four", "five", 6 };

            var query = data.OfType<string>();

            foreach (var s in query)

            {

                Console.WriteLine(s);

            }

输出: "one",  "Four", "five"

2. 复合查询

var ferrariDrivers = from r in Formula1.GetChampions()

                                from c in r.Cars

                                where c == "Ferrari"

                                orderby r.LastName

                                select r.FirstName + " " + r.LastName;

使用方法的复合查询

var ferrariDrivers = Formula1.GetChampions()

                .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);

3. 分组

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()

                            };

使用方法分组

var countries = Formula1.GetChampions()

                .GroupBy(r => r.Country)

                .OrderByDescending(g => g.Count())

                .ThenBy(g => g.Key)

                .Where(g => g.Count() >= 2)

                .Select(g => new

                {

                    Country = g.Key,

                    count = g.Count()

                });

嵌套对象的分组

var countries = from r in Formula1.GetChampions()

                            group r by r.Country into g

                            let count = g.Count()

                            orderby count descending, g.Key

                            where count >= 2

                            select new

                            {

                                Country = g.Key,

                                Count = count,

                                Racers = from r1 in g

                                        orderby r1.LastName

                                        select r1.FirstName + " " + r1.LastName

                            };

上一篇下一篇

猜你喜欢

热点阅读