Folgendes ist das Codebeispiel:
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();
}
}
ich kann nicht verstehen, was ich falsch mache. Ich bekomme immer "Konnte keinen konstanten Wert vom Typ 'System.Object' erstellen. Nur primitive Typen ('wie Int32, String und Guid') werden in diesem Kontext unterstützt."
Verwenden Sie == statt Equals:
where t.CustID == custIdToQuery
Wenn die Typen falsch sind, stellen Sie möglicherweise fest, dass dies nicht kompiliert wird.
Ich hatte das gleiche Problem mit einem nullable int. Stattdessen funktioniert die Verwendung von == gut. Wenn Sie jedoch .Equals verwenden möchten, können Sie es mit dem Wert der nullfähigen Variablen vergleichen
where t.CustID.Value.Equals(custIdToQuery)
Ich hatte das gleiche Problem, als ich versuchte, .Equals mit einer nullstellbaren Dezimalzahl auszuführen. Stattdessen funktioniert == gut. Ich denke, das ist, weil es nicht versucht, den genauen "Typ" der Dezimalzahl zu finden? zu dezimal.
Ich war mit demselben Problem konfrontiert und verglich das Collection Object "User"
mit dem Datentyp "userid"
(x.User.Equals(userid)
)
from user in myshop.UserPermissions.Where(x => x.IsDeleted == false && x.User.Equals(userid))
und korrekte Abfrage ist x.UserId.Equals(userid)
from user in myshop.UserPermissions.Where(x => x.IsDeleted == false && x.UserId.Equals(userid))