第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C# 中的 Linq 多組加入

C# 中的 Linq 多組加入

C#
波斯汪 2023-07-23 14:18:23
我需要?jiǎng)?chuàng)建如下所示的結(jié)構(gòu)。第1節(jié)問題1消息1第2節(jié)問題2消息1消息2我編寫了下面的代碼來生成它。using System;using System.Linq;using System.Collections.Generic;public class Program{    public static void Main()    {        // Question collection        IList<Question> QuestionList = new List<Question>() {                 new Question() { QuestionID = 1, QuestionName = "q1", SectionID = 1 } ,                new Question() { QuestionID = 2, QuestionName = "q2",   SectionID = 1 } ,                new Question() { QuestionID = 3, QuestionName = "q3",  SectionID = 2 } ,                new Question() { QuestionID = 4, QuestionName = "q4" ,  SectionID = 2 } ,                new Question() { QuestionID = 5, QuestionName = "q5"  }             };        IList<Section> SectionList = new List<Section>() {                 new Section(){ SectionID = 1, SectionName="Section 1"},                new Section(){ SectionID = 2, SectionName="Section 2"},                new Section(){ SectionID = 3, SectionName="Section 3"}            };        IList<Messages> MessagesList = new List<Messages>() {                 new Messages(){ MessagesID = 1, MessagesName="Message 1",QuestionID=1},                new Messages(){ MessagesID = 2, MessagesName="Message 2",QuestionID=1},                new Messages(){ MessagesID = 3, MessagesName="Message 3",QuestionID=2}            };        var groupJoin = SectionList.GroupJoin(QuestionList,  //inner sequence                                sct => sct.SectionID, //outerKeySelector                                 s => s.SectionID,     //innerKeySelector                                (sct, QuestionsGroup) => new // resultSelector                                 {                                    Questions = QuestionsGroup,                                    SectionName = sct.SectionName                                });不幸的是,我找不到加入這兩個(gè)小組的方法。因?yàn)椴糠趾蛦栴}使用sectionid連接,而問題和消息使用questionid連接。當(dāng)我使用第二組加入時(shí),我收到錯(cuò)誤 Questionid 在這種情況下不存在。我該如何解決這個(gè)問題。
查看完整描述

3 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

您的請(qǐng)求與您的對(duì)象不匹配,您是否希望在所有部分中都有一個(gè)結(jié)合 Message 和 Question 的唯一列表?


或者,如果您想要像“Section => Questions => Messages”這樣的樹,您可以這樣做:


var group1 = SectionList.Select(section => new Section

{

    SectionID = section.SectionID,

    SectionName = section.SectionName,

    Questions = QuestionList.Where(question => question.SectionID.Equals(section.SectionID))

        .Select(question => new Question

        {

            QuestionID = question.QuestionID,

            QuestionName = question.QuestionName,

            SectionID = section.SectionID,

            Messages = MessagesList.Where(message => message.QuestionID.Equals(question.QuestionID))

                .Select(message => new Messages

                {

                    MessagesID = message.MessagesID,

                    MessagesName = message.MessagesName,

                    QuestionID = message.QuestionID

                })

        })

});

當(dāng)然,你需要稍微改變一下你的類:


public class Question

{


    public int QuestionID { get; set; }

    public string QuestionName { get; set; }

    public int SectionID { get; set; }

    public IEnumerable<Messages> Messages { get; set; }

}


public class Section

{


    public int SectionID { get; set; }

    public string SectionName { get; set; }

    public IEnumerable<Question> Questions { get; set; }

}


查看完整回答
反對(duì) 回復(fù) 2023-07-23
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以加入QuestionListinto MessagesList。QuestionMessagesList之后,您需要QuestionMessagesList加入SectionList。


var questionMessages = QuestionList.GroupJoin(MessagesList,

                q => q.QuestionID,

                m => m.QuestionID,


                (Question, Messages) => new { Question, Messages }

            );


var groupJoin = SectionList.GroupJoin(questionMessages,

                sct => sct.SectionID,

                s => s.Question.SectionID,


                (sct, QuestionsGroup) => new

                {

                    Questions = QuestionsGroup,

                    SectionName = sct.SectionName

                });

然后:


            foreach (var item in groupJoin)

            {

                Console.WriteLine(item.SectionName);


                foreach (var stud in item.Questions)

                {

                    Console.WriteLine($" - {stud.Question.QuestionName}");


                    foreach (var message in stud.Messages)

                    {

                        Console.WriteLine($"  -- {message.MessagesName}");

                    }

                }

            }

http://img1.sycdn.imooc.com//64bcc69e00013a6902240330.jpg

查看完整回答
反對(duì) 回復(fù) 2023-07-23
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

您的創(chuàng)建結(jié)構(gòu)應(yīng)該改變,但如果您想要一個(gè)保留大部分創(chuàng)建結(jié)構(gòu)的解決方案,您可以使用這個(gè)


但請(qǐng)注意,在每個(gè)問題和每個(gè)部分中使用 where 并不利于性能。您應(yīng)該在創(chuàng)建部分列表時(shí)創(chuàng)建消息列表和問題列表。


IList<Messages> MessagesList = new List<Messages>() {

  new Messages(){ MessagesID = 1, MessagesName="Message 1",QuestionID=1},

  new Messages(){ MessagesID = 2, MessagesName="Message 2",QuestionID=1},

  new Messages(){ MessagesID = 3, MessagesName="Message 3",QuestionID=2}

};


// Question collection

IList<Question> QuestionList = new List<Question>() {

  new Question() { QuestionID = 1, QuestionName = "q1", SectionID = 1,messages = MessagesList.Where(message=> message.QuestionID==1).ToList() } ,

  new Question() { QuestionID = 2, QuestionName = "q2",   SectionID = 1,messages = MessagesList.Where(message=> message.QuestionID==2).ToList() } ,

  new Question() { QuestionID = 3, QuestionName = "q3",  SectionID = 2,messages = MessagesList.Where(message=> message.QuestionID==3).ToList() } ,

  new Question() { QuestionID = 4, QuestionName = "q4" ,  SectionID = 2 ,messages = MessagesList.Where(message=> message.QuestionID==4).ToList()} ,

  new Question() { QuestionID = 5, QuestionName = "q5" ,  SectionID = 2 ,messages = MessagesList.Where(message=> message.QuestionID==5).ToList() }

};  


IList<Section> SectionList = new List<Section>() {

  new Section(){ SectionID = 1, SectionName="Section 1",questions = QuestionList.Where(question=> question.SectionID == 1).ToList()},

  new Section(){ SectionID = 2, SectionName="Section 2",questions = QuestionList.Where(question=> question.SectionID == 2).ToList()},

  new Section(){ SectionID = 3, SectionName="Section 3",questions = QuestionList.Where(question=> question.SectionID == 3).ToList()}

};


foreach (var section in SectionList)

{

  Console.WriteLine("Section: " + section.SectionName);

  foreach (var question in section.questions)

  {

     Console.WriteLine("\tQuestion: " + question.QuestionName);

     foreach (var message in question.messages)

     {

        Console.WriteLine("\t\tMessage: " + message.MessagesName);

     }

  }

}

為此,您必須稍微更改您的課程。


public class Question

{


    public int QuestionID { get; set; }

    public string QuestionName { get; set; }

    public int SectionID { get; set; }


    public List<Messages> messages { get; set; }

}

public class Messages

{


    public int MessagesID { get; set; }

    public string MessagesName { get; set; }

    public int QuestionID { get; set; }

}

public class Section

{


    public int SectionID { get; set; }

    public string SectionName { get; set; }


    public List<Question> questions { get; set; }

}


查看完整回答
反對(duì) 回復(fù) 2023-07-23
  • 3 回答
  • 0 關(guān)注
  • 247 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)