2015-06-04 5 views
1

Мне нужна помощь с проблемой, которую я не могу опустить. Я хочу получить вопросник только с вопросами, на которые ответил arent.Linq для сущности - исключить детей на основе внуков детей

Чтобы быть понятным, человек должен иметь возможность запросить анкету, ответить на один вопрос, скажем, в общей сложности 5 вопросов. И затем, когда кто-то запросит вопросник в следующий раз, он должен быть возвращен, но только с 4 вопросами (оставшиеся без ответа).

Я пробовал это с лямбдой, включая также, но не могу заставить его работать. Любая помощь действительно оценена!

Классы структурированы как

public class Questionnaire() 
{ 
    public int Id {get; set;} 
    public List<Question> {get; set;} 
} 

public class Question() 
{ 
    public int Id {get; set;} 
    public int QuestionnaireId {get; set;} 
    public List<Answer> {get; set;} 
} 

public class Answer() 
{ 
    public int Id {get; set;} 
    public int QuestionId {get; set;} 
    public int QuestionnaireId {get; set;} 
    public List<ReceivedAnswer> {get; set;} 
} 

public class ReceivedAnswer() 
{ 
    public int AnswerId {get; set;} 
    public int QuestionId {get; set;} 
    public int QuestionnaireId {get; set;} 
    public int PersonId {get; set;} 
} 

ответ

0

Если у вас есть таблицы:

Questionnaires[QuestionnairesID, QuestionID] 
ReceivedAnswers[PersonID , AnswerID] 
Questions[QuestionID,Question] 
Answers[AnswerID,QuestionID,Answer] 

Linq запрос будет, как:

var pp = (from q in questionnaire.Questions 
     join a in question.Answers on q.questionid equals a.questionid 
     join ra in ReceivedAnswers on ra.answerid equals a.answerid 
     where ra.personid == inPersonID 
     select q.questionid).ToList(); 

var output = from questionnaire in _unitOfWork.Questionnaires 
     where questionnare.Id == questionnaireId && !pp.contains(q.questionid) 
     select questionnaire 
+0

Брус присоединиться на вопрос, так как не существует в контекст. Единственный прямой доступ, который у меня есть, - это вопросник. Все остальное - объекты для детей. Обновите вопрос, чтобы уточнить –

Смежные вопросы