检查linq对象是否被引用
问题描述:
什么是检查linq对象是否从另一个表引用的最佳(最快)方式。通常我这样做,但我想这可能会在更大的桌子上慢。检查linq对象是否被引用
CurrentObject.ReferencingObjects.Count != 0
这可能会更快。
CurrentObject.ReferencingObjects.FirstOrDefault() != null
有没有更好的方法?
答
如果ReferencingObjects
工具ICollection<T>
(它似乎,因为它有一个Count
财产),第一个选项可能是实际速度更快,因为Count
(对于大多数实现)往往直接存储,所以这实际上是只一个直接查找字段的属性。
但是,如果你正在使用Enumerable.Count()
(该方法,而不是一个属性),那么我的首选方法将改为使用方法:
CurrentObject.ReferencingObjects.Any();
由于Any()
方法非常清楚地显示出你的意图,并一般来说也很快。