Linq to sql 简单linq挑战:如何在查询中与另一个表的最后一个进行比较

Linq to sql 简单linq挑战:如何在查询中与另一个表的最后一个进行比较,linq-to-sql,Linq To Sql,我想将一个表列与另一个表的最后一个条目(通过给定的外键)进行比较。然后,当它是最后一个条目时,将其删除 因此: 表1-列userid-值:1000 表2。列userID-值:1000//列rowID:1 表2。列userID-值:2000//列rowID:2 表2。列userID-值:1000//列rowID:3 应该是:不 因此: 表1-列userid-值:1000 表2。列userID-值:1000//列rowID:1 表2。列userID-值:2000//列rowID:2 应该是:

我想将一个表列与另一个表的最后一个条目(通过给定的外键)进行比较。然后,当它是最后一个条目时,将其删除

因此:

  • 表1-列userid-值:1000
  • 表2。列userID-值:1000//列rowID:1
  • 表2。列userID-值:2000//列rowID:2
  • 表2。列userID-值:1000//列rowID:3
应该是:不

因此:

  • 表1-列userid-值:1000
  • 表2。列userID-值:1000//列rowID:1
  • 表2。列userID-值:2000//列rowID:2
应该是:是的

我的尝试:

(from a in dc.table1
where a.UserID != a.table2.Last().UserID)
但它不起作用

错误是

不支持查询运算符“Last”


数据库查询的“最后一个”没有意义,除非您还有一个order by:

a.table2.OrderBy(x => x.id).Last()

如果您按降序排序,并改为先使用,它的性能也可能会更好,尽管我还没有测试过它。

为什么没有OrderBy,Last就没有意义?始终存在项/行的默认顺序…因为出于性能原因,数据库可以自由更改磁盘上的顺序。它不会崩溃或诸如此类的事情,但您得到的是未定义的行。它可能会像您预期的那样工作,直到达到10000行,然后在数据库决定重新排序数据时突然停止工作。同样的问题:“不支持查询运算符‘Last’”下降和First()函数!