superioridad oraciones ingles inferioridad igualdad español cortos con comparativas adjetivos c# entity-framework

c# - oraciones - LINQ to Entities no reconoce el método ''Int32 Parse(System.String)'' al intentar analizar una columna para comparaciones de desigualdad



oraciones de inferioridad (5)

Tengo el siguiente código en mi página:

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

start y end son int, pero p.ID es una cadena. Así que debería convertir p.ID a int. Pero me sale el siguiente error:

LINQ to Entities no reconoce el método ''Int32 Parse (System.String)'', y este método no se puede traducir a una expresión de tienda.

¿¿Dónde está el problema??


Aunque no es eficiente, debería poder cargar todas las filas y luego usar LINQ para objetos:

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


Mueve la función de análisis fuera de la expresión linq.

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


Primero intenta convertir a int luego pasa el nombre de esa 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();


En primer lugar, recomendaría encarecidamente que verifique el diseño de su base de datos, si existe una buena razón para que la ID sea ​​una string . Consideraría cambiar el tipo de ID DB a int y se librará de este problema con la conversión .

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

Hacer la comparación fuera de linq a entidades:

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

Pero esto no se recomienda , porque está leyendo el conjunto completo de resultados de DB, antes de aplicar la condición where .

O haga que el modelo personalizado defina la función como se describe en esta publicación en SO:

Convierta la cadena a Int en EF 4.0 o Entity Framework: ¿Dónde extiendo el CSDL / MSL?


private void LoadDetail(int id) { var sp = from category in db.ProductCategories join product in db.Products on category.ProductCategoryID equals product.ProductCategoryID where id == int.Parse(category.ProductCategoryID) select new { product.ProductID, product.ProductName, product.ProductCode, product.Deception, category.CategoryName, product.Quanrity, product.Price }; DGVDetail.DataSource = sp.ToList();//help: Error: LINQ to Entities does not recognize the method ''Int32 Parse(System.String)'' method, and this method cannot be translated into a store expression } private void DGVMaster_CellClick(object sender, DataGridViewCellEventArgs e) { int index = e.RowIndex; LoadDetail(index + 1); }