Berikut ini adalah contoh kodenya:
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();
}
}
saya tidak dapat memahami apa yang saya lakukan salah. Saya terus mendapatkan "Tidak dapat membuat nilai konstan jenis 'System.Object'. Hanya jenis primitif ('seperti Int32, String, dan Guid') yang didukung dalam konteks ini."
==
dan.Equals()
: stackoverflow.com/questions/814878/…Saya memiliki masalah yang sama dengan int nullable. Menggunakan == malah berfungsi dengan baik, tetapi jika Anda ingin menggunakan .Equals, Anda dapat membandingkannya dengan nilai variabel nullable, jadi
sumber
Saya memiliki masalah yang sama ketika saya mencoba melakukan .Sama dengan desimal nol. Menggunakan == malah berfungsi dengan baik. Saya kira ini karena tidak mencoba untuk mencocokkan "jenis" yang tepat dari desimal? ke desimal.
sumber
IQueryable
, jadi itu tidak dikompilasi menjadi kode C # biasa. Ini menjadi ekspresi yang diteruskan ke penyedia kueri. Penyedia kueri tersebut dapat melakukan apa pun yang diinginkan dengan kueri tersebut, dan dapat menanganiEquals
dan==
sama atau tidak..Equal()
membandingkanInt32?
denganInt32
. KarenaInt32?
seharusnya mengandungInt32
dannull
, saya pikir itu akan berhasil. Tapi ternyata tidak.==
bekerja.Saya menghadapi masalah yang sama dan saya membandingkan Objek Koleksi
"User"
dengan tipe data integer"userid"
(x.User.Equals(userid)
)dan Query yang benar adalah
x.UserId.Equals(userid)
sumber
Dalam kasus saya, saya mengubah panggilan langsung
(sender as Button).Text
ke panggilan tidak langsung menggunakan var temp, telah berhasil. kode kerja:kode buggy:
sumber