我有两个表,为简化起见,看起来像这样:
TheFiles
FileID | UserID
23 | 342
53 | 352
海图
UserID | DateCreated
352 | 7/22/2014
245 | 7/25/2014
589 | 7/28/2014
我希望返回一个可以为空的int,它代表表UserID
中不在表TheData
中的最新TheFiles
。因此,例如,使用此示例数据,返回值将为589,因为它是TheData中的最新条目,并且它不在表TheFiles中。
我在where
没有数据时遇到麻烦。这就是我所拥有的:
var TheNullableInt = (from d in MyDC.TheData
where d.UserID doesn't exist in MyDC.TheFiles
orderby d.DateCreated descending
select d.UserID).FirstOrDefault();
我使用linq-to-SQL。我该怎么做where子句?
感谢。
答案 0 :(得分:1)
var lastest = MyDC.TheData.Where(d => !MyDC.TheFiles.Any(f => f.UserID == d.UserID))
.OrderByDescending()
.FirstOrDefault();
或者,如果真的想要使用LINQ
var latest = (from d in MyDC.TheData
where !MyDC.TheFiles.Any(f => f.UserID == d.UserID)
orderby d.DateCreated descending
select d
).FirstOrDefault();
答案 1 :(得分:1)
from d in MyDC.TheData
where !MyDC.TheFiles.Any(tf=>tf.UserID == d.UserID)
或执行join
from d in MyDC.TheData
join tf in MyDC.TheFiles on tf.UserID equals tf.UserID into j
from x in j.DefaultIfEmpty()
where x == null
select.....