linq中的null子句为WHERE

时间:2014-07-30 19:39:35

标签: c# linq linq-to-sql

我有两个表,为简化起见,看起来像这样:

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子句?

感谢。

2 个答案:

答案 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.....