Nie można bezpośrednio porównywać elementu Guid z ciągiem znaków. Konwertuj ciąg na Guid lub Guid na ciąg znaków.
Konwersja Guid na ciąg jest tak łatwa jak wywołanie .ToString()
dla zmiennej, ale ważne jest, aby wiedzieć, że istnieje więcej niż jeden sposób formatowania Guid. Z lub bez kresek.
someguid.ToString()
dadzą ci coś podobnego B06A6881-003B-4183-A8AB-39B51809F196
someGuid.ToString("N")
powróci coś B06A6881003B4183A8AB39B51809F196
Jeśli zdecydujesz się przekonwertować C.CustomerId
na sznurku upewnij się, że wiesz, co Format customerProfileId
w
Jeśli może to być albo format, może być lepiej konwersji customerProfileId
na identyfikator: new Guid(customerProfileId)
.
Wadą tego jest to, że konwersja z ciągu znaków na Guid spowoduje zgłoszenie wyjątku, jeśli nie jest poprawnie sformatowany. Tak więc, jeśli masz customerProfileId
z danych wprowadzanych przez użytkownika (np. Pole formularza lub URL), powinieneś najpierw je sprawdzić.
Jeśli jednak przekreślisz konwersję na Guida poza zapytaniem, prawdopodobnie uzyskasz lepszą wydajność, ponieważ porównanie Guidów jest prawdopodobnie szybsze niż porównywanie ciągów.
var customerProfileGuid = new Guid(customerProfileId);
// wrap in try catch if needed
var accountQuery = from C in CustomerModel.CustomerProfile
where C.CustomerId == customerProfileGuid
select C;
To nie działa w L2e: 'LINQ do podmiotów nie rozpoznaje metoda 'system.string toString()' metoda, a tej metody nie można przetłumaczyć na wyrażenie sklepu " –