我正在运行Visual Studio 2019; ASP.Net核心2.1。
我正在为客户开发内部设备预订网络应用程序。我收到一条奇怪的异常消息:
将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 : ""
在第一个条款中。这一行的内容是:
为什么有什么东西被转换为int?我错过了什么?
看起来admin
字段实际上不是布尔值而是字符串。因此,你不能像你正在做的那样在三元表达中使用它。要么确保该字段是bool,要么只需使用admin == "True"
快速修复此代码。我推荐第一个修复:)