Saltar al contenido

LINQ to Entities no reconoce el método ‘Int32 Parse (System.String)’ cuando intenta analizar una columna para comparaciones de desigualdad

Solución:

Primero, recomiendo encarecidamente verificar el diseño de su base de datos, si hay una buena razón para ID ser un string. Consideraría cambiar el ID Tipo de base de datos a int y te librarás de este problema al convertir.

El error que obtiene significa que EF no sabe cómo convertir el método Int32.Parse() a SQL. Básicamente, tienes dos opciones para lidiar con eso:

Haga la comparación fuera del linq con las entidades:

var myVar= Entity.SetName.AsEnumerable()
                 .Where(p => int.Parse(p.ID) >= start &&
                  int.Parse(p.ID) <= end);

Pero esto es no recomendado, porque está leyendo el conjunto de resultados completo de la base de datos, antes de aplicar el where condición.

O hacer función definida por modelo personalizado como se describe en esta publicación sobre SO:

Convertir String a Int en EF 4.0 o Entity Framework: ¿Dónde extiendo el CSDL / MSL?

Primero intente convertir a int luego pasa ese nombre de variable

int catgry = Convert.ToInt32(customercategory.OWNERSHIP_TYPE);
var customerCateg = (from d in _db.tbl_SIL_CUSTOMER_CATEGORY_MST
    .Where(d => d.CAT_ID == catgry) select d.CAT_TYPE).SingleOrDefault();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *