LINQ to Entities does not recognize the "System.Object Parse (System.Type, System.String)" method

I get this error, I try to resolve it for a long time, but I can’t fix it. LINQ to Entities does not recognize the "System.Object Parse (System.Type, System.String)" method, and this method cannot be translated into a storage expression.

 public static List<itmCustomization> GetAllProductCustomziation(string catID)
            {
                var arrcatID = catID.Split('_');
                int PId = int.Parse(arrcatID[0].ToString());
                int CatID = int.Parse(arrcatID[1].ToString());
                EposWebOrderEntities db = new EposWebOrderEntities();
                List<itmCustomization> lstCust = new List<itmCustomization>();
                lstCust.AddRange((from xx in db.vw_AllCustomization
                                  where xx.CatID == CatID && xx.ProductID == PID
                                  select new itmCustomization()
                                  {
                                      itmName = xx.Description,
                                      catId = (int)xx.CatID,
                                      proId = (int)xx.ProductID,
                                      custType = (customizationType)Enum.Parse(typeof(customizationType), xx.CustType)
                                  }).ToList<itmCustomization>());
                return lstCust;

            }
+4
source share
2 answers

When you use LINQ To Entities, the Entity Framework is currently trying to translate Enum.Parseinto SQL, and it fails because it is not a supported function.

What you can do is materialize the SQL query before calling Enum.Parse:

lstCust.AddRange((from xx in db.vw_AllCustomization
                                  where xx.CatID == CatID && xx.ProductID == PID
                                  select xx)
                        .TolList()  // Moves to LINQ To Object here
                        .Select(xx => new itmCustomization()
                                  {
                                      itmName = xx.Description,
                                      catId = (int)xx.CatID,
                                      proId = (int)xx.ProductID,
                                      custType = (customizationType)Enum.Parse(typeof(customizationType), xx.CustType)
                                  }).ToList<itmCustomization>());
+12
source

, custType = (customizationType)Enum.Parse(typeof(customizationType), xx.CustType). , xx.CustType? , , - , .

+2

All Articles