Voici l'exemple de code:
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();
}
}
je suis incapable de comprendre ce que je fais mal. Je continue à obtenir "Impossible de créer une valeur constante de type 'System.Object'. Seuls les types primitifs ('tels que Int32, String et Guid') sont pris en charge dans ce contexte."
Utilisez == au lieu de égal:
where t.CustID == custIdToQuery
Si les types sont incorrects, vous constaterez peut-être que cela ne compile pas.
J'ai eu le même problème avec un int nullable. Utiliser == fonctionne plutôt bien, mais si vous voulez utiliser .Equals, vous pouvez le comparer à la valeur de la variable nullable
where t.CustID.Value.Equals(custIdToQuery)
J'ai eu le même problème quand j'essayais de faire .Equals avec un nombre décimal nullable. Utiliser == au lieu de cela fonctionne bien. J'imagine que c'est parce que cela n'essaye pas de faire correspondre le "type" exact de décimal? décimal.
J'étais confronté au même problème et je comparais Collection Object "User"
avec un type de données entier "userid"
(x.User.Equals(userid)
)
from user in myshop.UserPermissions.Where(x => x.IsDeleted == false && x.User.Equals(userid))
et la requête correcte est x.UserId.Equals(userid)
from user in myshop.UserPermissions.Where(x => x.IsDeleted == false && x.UserId.Equals(userid))