我在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的地址而不是最后添加的地址?
答案 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
这两者没有任何联系。如果你真的想要获得最近添加的项目,那么你应该:
保留刚刚插入的项目的主键值,并使用它来检索实体:
DbSet
订购INSERT INTO Addresses ...
SELECT ... FROM Addresses ...
,然后选择最后一个:
person.Addresses.Add(address);
var id = address.Id;
//snip
var address = person.Addresses.Single(a => a.Id == id);