如何检查此id的记录是否存在于另一个表中

时间:2013-09-13 07:20:47

标签: c# asp.net database entity-framework lambda

我有这些表enter image description here

如何检查特定ActivityTask activityID和taskID是否在其中一个表threeHintsquestionsquestionhint中包含记录。没有activityID和taskID可以拥有多于一个表中的记录

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

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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;
}