LINQクエリに関するドキュメントとチュートリアルを読んでいますが、正しく理解できないようです。私はこれに似たモデルを持っており、それを永続化するためにエンティティフレームワークを使用しています:
public class Question
{
public int Id {set;get;}
public string Question {set;get;}
public DateTime DateCreated {get;set;}
public List<Answer> Answers {set; get;}
}
public class Answer
{
public int Id {set; get;}
public string UserAnswer {get;set;}
public DateTime DateAnswered {get;set;}
public User TheUserWhoAnswerd {get;set;}
}
public class User
{
public int Id { get;set;}
public string UserName {get;set;}
public DateTime DateCreated {get;set;}
public List<Question> Questions { get;set;}
}
The data context has something like this
public HashSet<Question> AllOfTheQuestionsDb {get;set;}
public HashSet<Answer> AllOfTheAnswersDb {get;set;}
public HashSet<User> AllOfTheUsersDb {get;set;}
私のフローはスタックオーバーフロー-トリビアスタイルに似ています。
システムはユーザーに質問を割り当てることができます(質問はシステム、つまり管理者によって生成され、最初は誰にも属していません)。その後、同じ質問を複数の異なるユーザーに割り当てることができます。その後、各ユーザーは質問に答えることができます。
質問には、それに与えられた回答のリストが含まれています。
したがって、たとえば、質問1がユーザー1から10に割り当てられていても、ユーザー2と4のみが回答した場合、その質問の「回答リスト」には2つの回答しかありません。
私の目標は、データソースでいくつかの基本的な並べ替えと選択を実行できるようにすることです。
例えば:
特定のユーザー(UserA)について、UserAがその質問に回答しなかったすべての質問を返します。
システム内のすべての質問について、質問が割り当てられたが、そのユーザーが回答した/回答しなかったすべてのユーザーを返します
特定の日付以降に回答された/回答されなかったユーザーの質問と回答を選択する