2010-11-09 7 views
0

J'ai une table dans LINQ to SQL appelée "Cars" qui contient des objets "Car". Chaque voiture a un EngineID et un ColorEID.Récupérer un objet complexe "identique" de la base de données

J'ai créé un nouvel objet Car local juste en mémoire (pas encore validé dans la base de données).

J'ai déjà un IEqualityComparer écrit qui fonctionne bien en conjonction avec .Contains pour me dire TRUE/FALSE si des voitures "identiques" à celle que j'ai créée existent déjà.

Mais il retourne un bool ..

Comment puis-je obtenir réellement quelles voitures sont identiques ..?

E.g. Je veux quelque chose comme ..

IQueryable<Car> IdenticalCar = db.Cars.Equals(MyCar).FirstOrDefault(); 

Répondre

1
db.Cars.Where(c=>c.Equals(MyCar)).FirstOrDefault(); 
+0

Thx xandy. Mais quand j'essaie ce code, alors que ma méthode .Contains existante retourne TRUE (des objets identiques existent), le .Equals retourne alors null et n'en trouve pas. Est-ce que .Equals utilise définitivement IEqualityComparer ?? Salutations – Aaron

+0

Aussi: Lorsque je débogue le code ci-dessus, il ne marche jamais dans ma routine Equals .. Alors pourquoi ma propre implémentation d'Equals n'est-elle pas utilisée quand j'utilise votre code? Salut .. – Aaron

+0

Ok, je l'ai trié. J'avais besoin de l'implémenter à partir de l'interface IEquatable et implémenter ma propre méthode Equals (Car) ainsi qu'une méthode Equals (obj) et aussi la méthode GetHashCode. À votre santé – Aaron

Questions connexes