2015-10-08 73 views
0

我有一个实体根据其外键与多个其他实体关联。我希望有一种方法来外国实体,而不必做自己的查询关联,就像这样:基于外键的关联实体

original.Created = (from U in data.Users where U.UserID == createdID select U).FirstOrDefault(); 

我看到,你可以做这样的事情(“数据”是我的数据库连接):

original.Created = data.Users.Single(x => x.UserID == createdID); 

这实际上是否更好?或者还有另一种方式,我不知道直接设置ID来建立关联,而不会花费另一次去数据库?

感谢,

安德鲁

回答

0

第一个是一个LINQ查询表达式,你可能会注意到它看起来像一个查询,第二个是只使用普通的LINQ扩展方法。它们可能看起来不同,但编译器将它们视为相同。

它只是一个偏好问题,我自己我更喜欢扩展方法,因为我发现它们更具可读性。在这种情况下,情况可能并非如此,但是当序列变得更长时,阅读起来会更困难。

+0

我不认为他们是相等的,因为.FirstOrDefault v.Single但这是一个相对较小的狡辩 – Vlad274

+0

我绝对喜欢第二个从“干净的代码”的角度来看更好。但这是我能做的最好的吗?如果不进行查询,是否没有办法做到这一点?我问,因为我有几个这样的关联必须在给定的实体上进行,并且我认为它会放慢一点。 Vald274的 –

+0

确实没有。我只想指出编译器将它们视为相同,只有编码风格不同。 @Starfleet如何降速?性能?就我所知,没有更快的方法做到这一点。但是,不管你使用LINQ方法还是LINQ查询,都没有区别。 –