C# 为什么我’;我得到一个“;操作员‘==’;不能应用于类型为‘;字符串’;在这个DHTMLX调度程序教程中?

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

我找不到任何类似问题的帖子,所以我想我会在这个论坛上提问。我正在编写一个关于构建DGTMLS调度程序的教程,可在此处找到:

一切都很顺利,直到我到达一行,尝试根据源Id进行查询

changedEvent=data.Events.SingleOrDefault(ev=>ev.id==action.SourceId)

这里我得到的错误消息是运算符“==”不能应用于“string”和“long”类型的操作数

代码块发布在下面。有人能告诉我为什么“运算符”==”不能应用于“字符串”类型的操作数吗

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'
只是说明问题。在两种不同类型之间,无法进行自动转换。您应该手动进行转换请重新报告,然后进行比较。

感谢您的快速响应……成功了。