目前正在使用 C# 语言在 Visual Studio 中开发一个停车应用程序。在付款表格中,有 2 个文本框,名为 tbMembership(保存会员 ID)和 tbRate(保存基于会员和车辆类型的停车费),以及 1 个名为 cbType(保存车辆类型 ID)的组合框。
我有一个用于名为 ParkingData 的付款表单的 SQL 数据库,其中包含以下字段:id、license_plate、vehicle_id、employee_id、hourly_rates_id、datetime_in、datetime_out、amount_to_pay。
根据客户的要求,每小时的停车费将根据车辆是否属于会员而有所不同。此外,计算基于车辆停放的小时数。
我尝试编写这样的代码,但它不起作用 `无效关税() {
var harga = Global.db.HourlyRates.FirstOrDefault(x => x.value == Convert.ToDecimal(tbRate.Text));
harga.vehicle_type_id = Convert.ToInt32(cbType.SelectedValue);
harga.Membership.name = tbOwner.Text;
if (harga != null)
{
tbRate.Text = harga.value.ToString();
}
}`
该代码的第一行有一个错误代码 即识别方法 'System.Decimal ToDecimal(System.String)' 方法,并且此方法无法转换为存储表达式。'
`无效关税() {
//在第一行 var harga = Global.db.HourlyRates.FirstOrDefault(x => x.value == Convert.ToDecimal(tbRate.Text)); harga.vehicle_type_id = Convert.ToInt32(cbType.SelectedValue); harga.Membership.name = tbOwner.Text;
if (harga != null)
{
tbRate.Text = harga.value.ToString();
}
}`
Convert.ToDecimal,不能这样翻译
要解决此问题,您可以尝试单独检索值并在 C# 中而不是在 LINQ 查询中执行转换。这是您的代码的更新版本:
无效关税() { 十进制率 = Convert.ToDecimal(tbRate.Text); // 分别检索和转换汇率 int vehicleTypeId = Convert.ToInt32(cbType.SelectedValue); 字符串 ownerName = tbOwner.Text;
var harga = Global.db.HourlyRates.FirstOrDefault(x => x.value == rate && x.vehicle_type_id == vehicleTypeId);
if (harga != null)
{
tbRate.Text = harga.value.ToString();
}
}