【问题标题】:How do i check if records of this id exists in another table如何检查此 id 的记录是否存在于另一个表中
【发布时间】:2013-09-13 07:20:47
【问题描述】:
我有这些表
我如何检查特定的ActivityTask activityID 和 taskID 是否在表threeHints、questions 和questionhint 之一中有记录。 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;
}