我正在运行Visual Studio 2019; ASP.Net Core 2.1。
我正在为客户开发内部设备预订Web应用程序。我收到一条奇怪的异常消息:
将varchar值“ False”转换为数据类型int时转换失败
我通过注释掉不同块中的各种分配来排除了select new CalendarData
部分。我以类似的方式排除了where
子句,一次注释掉了一个过滤器。
try {
reservations = (
from reservation in reservationsContext.Reservations
join reservationToBgColor in reservationsContext.ReservationToBgColor
on new {
id = reservation.Id,
user = admin ? myUserName : ""
} equals new {
id = reservationToBgColor.ReservationId,
user = reservationToBgColor.AdminNetid.Trim().ToLower()
} into resColorBucket
from resColor in resColorBucket.DefaultIfEmpty()
where reservation.Device.ToUpper().Split(
'.',
StringSplitOptions.RemoveEmptyEntries
)[0].Trim().Equals(myMachine)
&& reservation.StartDate < myEnd
&& reservation.EndDate >= myStart
select new CalendarData {
...
}
).ToList();
} catch (Exception e) {
throw new Exception(e.Message);
}
留下“左连接”。具体来说就是
user = admin ? myUserName : ""
第一个子句中的。该行的内容是:
user:正在构建的匿名对象中的字符串
admin:bool,查询外部的变量,用于标记该方法的调用者是否为“ admin”。
myUserName:字符串,查询外部的变量,为空或其中包含用户名。
为什么将任何东西转换为int?我想念什么?
答案 0 :(得分:0)
看起来admin
字段实际上不是布尔值,而是字符串。因此,您不能像正在执行的那样在三元表达式中使用它。请确保该字段是bool,或者只是使用admin == "True"
快速修复此代码。我推荐第一个解决方法:)