I have a simple array of objects:
Contact[] contacts = _contactService.GetAllContacts();
I want to test if that method returns any contacts. I really like the LINQ syntax for Any() as it highlights what I am trying to achieve:
if(!contacts.Any()) return;
However, is this slower than just testing the length of the array?
if(contacts.Length == 0) return;
Is there any way I can find out what kind of operation Any() performs in this instance without having to go to here to ask? Something like a Profiler, but for in-memory collections?
There are two
Any()methods: 1. An extension method forIEnumerable<T>2. An extension method forIQueryable<T>I'm guessing that you're using the extension method for
IEnumerable<T>. That one looks like this:Basically, using
Length == 0is faster because it doesn't involve creating an iterator for the array.If you want to check out code that isn't yours (that is, code that has already been compiled), like
Any<T>, you can use some kind of disassembler. Jetbrains has one for free - http://www.jetbrains.com/decompiler/