我有这些表
如何检查特定ActivityTask
activityID和taskID是否在其中一个表threeHints
,questions
和questionhint
中包含记录。没有activityID和taskID可以拥有多于一个表中的记录
我正在使用实体框架和lambda表达式。我不知道如何编写代码来检查这3个表中存在的记录。
答案 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;
}