Come operatore in Entity Framework?

.net entity-framework linq-to-entities sql-server

Domanda

Stiamo cercando di implementare l'operatore "LIKE" in Entity Framework per le nostre entità con campi stringa, ma non sembra essere supportato. Qualcun altro ha provato a fare qualcosa del genere?

Questo post del blog riassume il problema che stiamo avendo. Potremmo usare contiene, ma quello corrisponde solo al caso più banale per LIKE. La combinazione di contiene, startswith, endswith e indexof ci porta lì, ma richiede una traduzione tra i caratteri jolly standard e il codice Linq to Entities.

Risposta accettata

Questo è un vecchio post ora, ma per chiunque cerchi la risposta, questo link dovrebbe aiutare.

Versione breve:

Metodo SqlFunctions.PatIndex : restituisce la posizione iniziale della prima occorrenza di un modello in un'espressione specificata, o zeri se il modello non viene trovato, su tutti i tipi di dati di testo e carattere validi

Spazio dei nomi: System.Data.Objects.SqlClient Assembly: System.Data.Entity (in System.Data.Entity.dll)

Un po 'di una spiegazione appare anche in questo thread del forum .


Risposta popolare

In realtà non so nulla di EF, ma in LINQ to SQL di solito esprimi una clausola LIKE usando String.Contains:

where entity.Name.Contains("xyz")

si traduce in

WHERE Name LIKE '%xyz%'

(Usa StartsWith and EndsWith per altri comportamenti).

Non sono del tutto sicuro che sia utile, perché non capisco cosa intendi quando dici di voler implementare LIKE. Se ho frainteso completamente, fammelo sapere e cancellerò questa risposta :)



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché