The following is the code sample:
private void loadCustomer(int custIdToQuery) { var dbContext = new SampleDB(); try { var customerContext = from t in dbContext.tblCustomers // keeps throwing: where t.CustID.Equals(custIdToQuery) // Unable to create a constant value of type 'System.Object'. select new // Only primitive types ('such as Int32, String, and Guid') { // are supported in this context. branchId = t.CustomerBranchID, // branchName = t.BranchName // }; // if (customerContext.ToList().Count() < 1) //Already Tried customerContext.Any() { lstbCustomers.DataSource = customerContext; lstbCustomers.DisplayMember = "branchName"; lstbCustomers.ValueMember = "branchId"; } else { lstbCustomers.Items.Add("There are no branches defined for the selected customer."); lstbCustomers.Refresh(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { dbContext.Dispose(); } }
i am unable to understand what am i doing wrong. I keep getting "Unable to create a constant value of type 'System.Object'. Only primitive types ('such as Int32, String, and Guid') are supported in this context."
Use == instead of Equals:
where t.CustID == custIdToQuery
If the types are incorrect you may find that this doesn't compile.
I had the same issue with a nullable int. Using == instead works nicely, but if you want to use .Equals, you can compare it to the value of the nullable variable, so
where t.CustID.Value.Equals(custIdToQuery)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With