C# extension methods to compare objects by specified properties only