问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何理解C#中的分组联接

发布网友 发布时间:2022-05-05 07:37

我来回答

1个回答

热心网友 时间:2023-09-05 15:02

文章废话较多,慢慢看.如果等不急,直接拉到最下面看总结.



分组联接可用于产生分层数据结构。 它将第一个集合中的每个元素与第二个集合中的一组相关元素进行配对。

例如,一个名为 Student 的类或关系数据库表可能包含两个字段:Id 和 Name。 另一个名为 Course 的类或关系数据库表可能包含两个字段:StudentId 和 CourseTitle。 这两个数据源的分组联接(基于匹配的 Student.Id 和 Course.StudentId)会将每个 Student 与一个 Course 对象集合(可能为空)组合在一起。

下面的示例根据与 Pet.Owner 属性匹配的 Person 来对 Person 和 Pet 类型的对象执行分组联接。 与为每个匹配产生一对元素的非分组联接不同,分组联接只为第一个集合的每个元素产生一个结果对象(在此示例中为一个 Person 对象)。 第二个集合中的相应元素(在此示例中为 Pet 对象)被分组到一个集合中。 最后,结果选择器函数为每个包含 Person.FirstName 和一个 Pet 对象集合的匹配创建一个匿名类型。

 class Person
        {
            public string FirstName { get; set; }
            public string LastName { get; set; }
        }

        class Pet
        {
            public string Name { get; set; }
            public Person Owner { get; set; }
        }

        /// <summary>
        /// This example performs a grouped join.
        /// </summary>
        public static void GroupJoinExample()
        {
            Person magnus = new Person { FirstName = "Magnus", LastName = "Hedlund" };
            Person terry = new Person { FirstName = "Terry", LastName = "Adams" };
            Person charlotte = new Person { FirstName = "Charlotte", LastName = "Weiss" };
            Person arlene = new Person { FirstName = "Arlene", LastName = "Huff" };

            Pet barley = new Pet { Name = "Barley", Owner = terry };
            Pet boots = new Pet { Name = "Boots", Owner = terry };
            Pet whiskers = new Pet { Name = "Whiskers", Owner = charlotte };
            Pet bluemoon = new Pet { Name = "Blue Moon", Owner = terry };
            Pet daisy = new Pet { Name = "Daisy", Owner = magnus };

            // Create two lists.
            List<Person> people = new List<Person> { magnus, terry, charlotte, arlene };
            List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };

            // Create a list where each element is an anonymous type
            // that contains the person's first name and a collection of 
            // pets that are owned by them.
            var query = from person in people
                        join pet in pets on person equals pet.Owner into gj
                        select new { OwnerName = person.FirstName, Pets = gj };

            foreach (var v in query)
            {
                // Output the owner's name.
                Console.WriteLine("{0}:", v.OwnerName);
                // Output each of the owner's pet's names.
                foreach (Pet pet in v.Pets)
                    Console.WriteLine("  {0}", pet.Name);
            }
        }

        // This code proces the following output:
        //
        // Magnus:
        //   Daisy
        // Terry:
        //   Barley
        //   Boots
        //   Blue Moon
        // Charlotte:
        //   Whiskers
        // Arlene:



白话来说所谓分组连接就是.

一群小学生都站在操场上排队,这时候你是分不清谁是哪个班的.

但是班级这个对象又是存在的.

当你让每个小学生按照自己的班级属性进行归类后,他们就连接到了班级这个对象上.

也就有了连接.

而分组就是每个班级

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 group by 以及 join的合作中的底层问题 Autocad中的合并命令join和编组命令group有什么不同? 社会工作者职业水平考试有什么用吗?我已经从事社区工作三年了,今年第一次听说这个考试,有必要参加吗? 社会工作师有必要考吗? 社会工作者证书要停考了吗?有没有必要考这个证 我梦见自己在战争中打仗,接着就出现个观世音菩萨.请问着是什么预示 在建设银行贷款34万,贷20年,要月供多少 我贷款34万20年还清利率6.615更改浮动利率怎么算月供是多少谢谢 贷款34万,按揭20年,按照现在的银行利息,我每月还款多少?谢谢 请问贷款34万,20年月供要多少? 34万,贷款二十年,每月还多少 草字头下面一个次字念什么 公积金贷款20年34万还了17万每月应还多少 木加次怎么读 草字头下面加次是什么字怎么读 草字头一个次念什么字 次心念什么 啊、波、次、得汉语拼音的读法?请问谁知道,谢谢! 次的反义词是什么字 这几个字怎么读的 招商银行应收账款的构成 join表示什么。主要有以下两种用法 数据库中join可以和group by语句一起使用吗? join 与 group by 结合的问题 如何LEFTJOIN进行查询,Join&lt;TOuter,TInner,TKey,TResult&gt; 如何将linq left join 的写法转换成 limq left join lambad的写法 在LINQ 里使用 Left Join 还有哪些需要注意的呢 attend, join, take part in, enter for, join in 的区别 从惠子相梁和庄子与惠子游于濠梁两则中你认为庄子是怎么样的一个人? &quot;吾生也有涯,而学也无涯&quot;出自哪? 读了【庄子钓于濮水】,你认为庄子是怎么样的一个人 曲阜哪里卖自行车打气筒配件的 庄子大家都熟悉,他身上还有哪些我们不知道的故事? 庄子事迹 两人船打气筒怎么买 庄字的故事 《庄子》是由庄周一人所写而成的吗? 谁知道安徽省租房需缴纳房产税、营业税,个人所得税分别是多少? 瓷砖地板清洗方法是什么 瓷砖地板日常保养技巧介绍 合肥的房屋租赁开票税率是多少?