我有这些桌子
如何检查特定的ActivityTask
activityID 和 taskID 是否在其中一个表中有记录 threeHints
,questions
以及questionhint
。没有 activityID 和 taskID 可以有超过 1 个表中存在的记录
我正在使用实体框架和 lambda 表达式。我被困在如何编写代码来检查这三个表中存在的记录。
我有这些桌子
如何检查特定的ActivityTask
activityID 和 taskID 是否在其中一个表中有记录 threeHints
,questions
以及questionhint
。没有 activityID 和 taskID 可以有超过 1 个表中存在的记录
我正在使用实体框架和 lambda 表达式。我被困在如何编写代码来检查这三个表中存在的记录。
此 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();
我假设只有一个或零个表具有唯一的一对(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;
}