【问题标题】:How do i check if records of this id exists in another table如何检查此 id 的记录是否存在于另一个表中
【发布时间】:2013-09-13 07:20:47
【问题描述】:

我有这些表

我如何检查特定的ActivityTask activityID 和 taskID 是否在表threeHintsquestionsquestionhint 之一中有记录。 activityID 和 taskID 不能有超过 1 个表中存在的记录

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

【问题讨论】:

  • 你能添加你目前尝试过的代码的相关部分吗?

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


【解决方案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();

【讨论】:

    【解决方案2】:

    我假设只有一个或零个表具有唯一的一对 (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;
    }
    

    【讨论】:

    • 您也可以将布尔值转换为整数。 1=真,0=假。
    猜你喜欢
    • 2013-01-18
    • 2021-06-19
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多