美文网首页
LINQ 查询(2)

LINQ 查询(2)

作者: Ritchie_Li | 来源:发表于2022-06-23 21:27 被阅读0次

    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

                                };

    相关文章

      网友评论

          本文标题:LINQ 查询(2)

          本文链接:https://www.haomeiwen.com/subject/xhvmvrtx.html