Comment puis-je effectuer une comparaison des GUID avec LINQ sans tenir compte de la casse

Dans le code ci-dessous, je souhaite comparer deux GUID. Le problème est que je ne reçois aucune tâche retournée car les GUID sont différents (majuscules ou minuscules). Je dois effectuer une comparaison insensible à la casse.

MembershipUser membershipUser = Membership.GetUser(); ssortingng strUserId = membershipUser.ProviderUserKey.ToSsortingng(); Guid userId = new Guid(strUserId.ToUpper()); lblUserId.Text = userId.ToSsortingng(); DataModelEntities dc = new DataModelEntities(); var userTasks = dc.tasks.Where(t => t.user_id == userId).ToList(); 

Comment comparer les GUID et trouver des correspondances indépendamment du cas?

UPDATE 1 convertit maintenant le GUID du fournisseur d’appartenance en un GUID

 Guid userId = (Guid) membershipUser.ProviderUserKey; 

Mais je n’ai toujours pas d’allumettes.

Vous ne savez pas pourquoi vous les comparez sous forme de texte, mais au lieu de t.user_id == userId utilisez t.userId.Equals(userId, SsortingngComparison.OrdinalIgnoreCase)

Le == est surchargé sur Guid, vous n’avez donc pas besoin de comparer les représentations de chaîne.

Voir http://msdn.microsoft.com/en-us/library/system.guid.op_equality(v=VS.90).aspx

J’ai toujours eu le dillema d’utiliser == pour la comparaison de colonnes guid / uniqueidentifier dans les instructions linq (en particulier dans la clause where), j’ai donc choisi un moyen plutôt sûr d’utiliser – (entityGuidColumn.CompareTo (guidParameter) == 0). Cela a fonctionné pour moi. Donner un coup de feu.

Un moyen facile d’ignorer la casse lors de la comparaison d’une chaîne consiste à tout convertir en minuscule (ou majuscule) avant de la comparer. Alors:

 var userTasks = dc.tasks.Where(t => t.user_id.ToSsortingng().ToLower() == userId.ToSsortingng().ToLower()).ToList(); 

Cela étant dit, je suis d’accord avec les autres commentateurs sur le fait que vous devriez utiliser une comparaison native de GUID, pas une comparaison de chaîne.