0

我有这些桌子在此处输入图像描述

如何检查特定的ActivityTaskactivityID 和 taskID 是否在其中一个表中有记录 threeHintsquestions以及questionhint。没有 activityID 和 taskID 可以有超过 1 个表中存在的记录

我正在使用实体框架和 lambda 表达式。我被困在如何编写代码来检查这三个表中存在的记录。

4

2 回答 2

1

此 LINQ 查询对存在记录的表进行计数。然后检查它是 0 还是 1,并将其添加到结果集中。

var activityTasksPresentInOneTableOrNone = ctx.ActivityTasks.Where(at => ((at.ThreeHints.Count > 0 ? 1 : 0) + (at.Questions.Count > 0 ? 1 : 0) + (at.QuestionHints.Count > 0 ? 1 : 0)) <= 1).ToList();
于 2013-09-13T07:52:12.323 回答
0

我假设只有一个或零个表具有唯一的一对(activityID,taskID)。

public Boolean IsUnique(Int32 activityID, Int32 taskID)
{
    Int32 existsInThreeHints = ThreeHintsRepository.
        Any(hint =>
                hint.activityID == activityID &&
                hint.taskID == taskID) ? 1 : 0;

    Int32 existsInQuestions = QuestionsRepository.
        Any(question =>
                question.activityID == activityID &&
                question.taskID == taskID) ? 1 : 0;

    Int32 existsInQuestionHint = QuestionHintRepository.
        Any(questionHint =>
                questionHint.activityID == activityID &&
                questionHint.taskID == taskID) ? 1 : 0;

    return existsInThreeHints + existsInQuestions + existsInQuestionHint <= 1;
}
于 2013-09-13T07:36:08.153 回答