3 回答

TA貢獻1995條經驗 獲得超2個贊
您的請求與您的對象不匹配,您是否希望在所有部分中都有一個結合 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
})
})
});
當然,你需要稍微改變一下你的類:
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; }
}

TA貢獻1803條經驗 獲得超6個贊
您可以加入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}");
}
}
}

TA貢獻1775條經驗 獲得超11個贊
您的創建結構應該改變,但如果您想要一個保留大部分創建結構的解決方案,您可以使用這個
但請注意,在每個問題和每個部分中使用 where 并不利于性能。您應該在創建部分列表時創建消息列表和問題列表。
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; }
}
- 3 回答
- 0 關注
- 230 瀏覽
添加回答
舉報