EntitySet.Last()不是最新添加的元素?

时间:2015-08-13 17:03:00

标签: c# linq linq-to-sql

我在Linq to SQL中有一个实体集,让我们说一个有多个地址的人。然后使用此代码

person.Addresses.Add(address);
person.Addresses.Last(). ... // Not the one just added!

Last()是一些地址,而不是最后添加的地址。使用

访问上一行添加的那个
person.Addresses.Where(x => x.UniqueId == address.UniqueId).Single(). ...

有效,但这对我来说有点奇怪。

UniqueId是GUID,是Address表的主键。这是原因吗? Last()是否返回了具有最大GUID的地址而不是最后添加的地址?

1 个答案:

答案 0 :(得分:2)

contracts.groupby(['State','Year'])['$'].mean() 不仅仅是实体的集合,所以你在这里实际上是两个数据库查询。

State / Year / $
NY     2009   5
       2010   10
       2011   5
       2012   15
NJ     2009   2
       2012   12
DE     2009   1
       2010   2
       2011   3
       2012   6

这两者没有任何联系。如果你真的想要获得最近添加的项目,那么你应该:

  1. 保留刚刚插入的项目的主键值,并使用它来检索实体:

    DbSet
  2. 订购INSERT INTO Addresses ... SELECT ... FROM Addresses ... ,然后选择最后一个:

    person.Addresses.Add(address);
    var id = address.Id;
    //snip
    var address = person.Addresses.Single(a => a.Id == id);