好吧,我觉得这个很容易。我在tblWorkouts
和tblPersonalRecords
之间存在一对多的关系。我现在已经从tblWorkouts
删除了一些行而没有从tblPersonalRecords
删除它们(我应该设置一个外键和一个级联删除...)。
我正在尝试找出一个查询来查找tblPersonalRecords
中的孤立行。这是我试过的:
from s in db.tblPersonalRecords
where s.tblWorkoutRecord.WorkoutSummaryID == null
select s
这不起作用。如何编写LINQ查询以查找我的孤立行?如果有所作为,我正在使用Linq2Sql。
答案 0 :(得分:3)
阅读您对可能需要的问题的评论:
from s in db.tblPersonalRecords
where !db.PersonalWorkout.Any(x => s.WorkoutRecordID == x.WorkoutRecordID)
select s
答案 1 :(得分:3)
也许我误解了这个问题但是为什么在从tblWorkouts中删除行后没有更新行时,你会检查tblPersonalRecords中的值是否为空?
我希望现在的外键值现在指向tblWorkouts中不再存在的行而不是null。
如果是这种情况,那么这样的事情会有所帮助:
var ids = from w in db.tblWorkouts
select w.id;
var rows = from s in db.tblPersonalRecords
where !ids.Contains(s.tblWorkoutRecord.WorkoutSummaryID)
select s;
无论如何,如果您的原始声明,编译器会抱怨什么?你得到什么类型的错误?
答案 2 :(得分:0)
这是有用的:
var result = from s in db.tblPersonalRecords
join j in db.tblWorkoutRecords on s.WorkoutRecordID equals j.WorkoutRecordID into PersonalWorkout
from j in PersonalWorkout.DefaultIfEmpty()
where j == null
select new
{
PersonalRecordID = s.PersonalRecordID,
WorkoutRecordIDPR = s.WorkoutRecordID,
WorkoutRecordID = j == null ? 0 : 1
};