C# 为什么我’;我得到一个“;操作员‘==’;不能应用于类型为‘;字符串’;在这个DHTMLX调度程序教程中?
我找不到任何类似问题的帖子,所以我想我会在这个论坛上提问。我正在编写一个关于构建DGTMLS调度程序的教程,可在此处找到: 一切都很顺利,直到我到达一行,尝试根据源Id进行查询 changedEvent=data.Events.SingleOrDefault(ev=>ev.id==action.SourceId) 这里我得到的错误消息是运算符“==”不能应用于“string”和“long”类型的操作数 代码块发布在下面。有人能告诉我为什么“运算符”==”不能应用于“字符串”类型的操作数吗C# 为什么我’;我得到一个“;操作员‘==’;不能应用于类型为‘;字符串’;在这个DHTMLX调度程序教程中?,c#,linq,asp.net-mvc-3,C#,Linq,Asp.net Mvc 3,我找不到任何类似问题的帖子,所以我想我会在这个论坛上提问。我正在编写一个关于构建DGTMLS调度程序的教程,可在此处找到: 一切都很顺利,直到我到达一行,尝试根据源Id进行查询 changedEvent=data.Events.SingleOrDefault(ev=>ev.id==action.SourceId) 这里我得到的错误消息是运算符“==”不能应用于“string”和“long”类型的操作数 代码块发布在下面。有人能告诉我为什么“运算符”==”不能应用于“字符串”类型的操作数吗 pub
public ContentResult Save(int? id, FormCollection actionValues)
{
var action = new DataAction(actionValues);
var changedEvent = (Event)DHXEventsHelper.Bind(typeof(Event), actionValues);
var data = new SampleDataContext();
try
{
// var changedEvent = (CalendarEvent)DHXEventsHelper.Bind(typeof(CalendarEvent), actionValues);
switch (action.Type)
{
case DataActionTypes.Insert://define here your Insert logic
data.Events.InsertOnSubmit(changedEvent);
break;
case DataActionTypes.Delete://define here your Delete logic
changedEvent = data.Events.SingleOrDefault(ev=>ev.id==action.SourceId);
break;
default:// "update"
//do update
break;
}
}
catch
{
action.Type = DataActionTypes.Error;
}
return (ContentResult)new AjaxSaveResponse(action);
}
因为您正试图直接将
字符串
与长
进行比较。在C#中不能这样做,您需要将字符串
解析为长
,或者将长
转换为字符串
。然后按如下方式进行比较:
var sourceId = action.SourceId.ToString();
data.Events.SingleOrDefault(ev => ev.id == sourceId);
在这种情况下,我假设
ev.id
是string
和actions.SourceId
是long
。实际上,运算符'=='不能应用于'string'类型的操作数,而'long'
只是说明问题。在两种不同类型之间,无法进行自动转换。您应该手动进行转换请重新报告,然后进行比较。感谢您的快速响应……成功了。