运算符==不能被应用到的Guid或者int中的LINQ(MVC书例子)(Operator == ca

2019-10-19 18:04发布

通过WROX工作“开始ASP.NET MVC 1.0”的书我已经打了一个奇怪的“错误”。

“运营商‘==’不能被施加到型‘的System.Guid’或‘INT’的操作数”。 在问题的路线是:

(p => p.ID_Officers == id).Single();

完整的代码如下,及高级管理人员是我的表,ID_Officers是我的ID字段。 (I想象,我可以的用来代替“P”“O”)

public ActionResult IndividualOfficer(int id)
    {
        OfficersDataContext dataContext = new OfficersDataContext();
        Officer officer = dataContext.Officers.Where
            (p => p.ID_Officers == id).Single();
        ViewData["OfficerName"] = officer.OfficerName;
        ViewData["Officer"] = officer;

        return View();
    }

这个初学者的智慧任何话,将不胜感激。

我想补充的是,虽然这本书建议初学者 - 男孩很干。 它明确提出了,明显看到需要添加/演习期间键入什么,但我觉得它是一个有经验的程序员过来到MVC写的。 而不是一个初学编程的。

因此,没有人知道一个更友好的初学者书(我喜欢的书籍和阅读),我可以更容易地下沉我的时间和牙齿成的?

感谢您的帮助和指导。

麦克风

Answer 1:

它非常简单。

idintp.ID_Officers是,作为错误消息指出,一个Guid ,这不是一个int ,并且不能针对被检查int是否相等。 两种不同类型的,你知道的。

我不知道在哪里的id控制器方法的来源。 在某些时候你必须呈现给用户的人员名单,并构建了指向每个个别人员,其中包括链接p.ID_Officers在链接的定义,但你的路线期待一个int 。 没有看到你的路由配置方式或你的官链接构建的,我不能给你更多的提示比的。



Answer 2:

好了,问题是, p.ID_OfficersSystem.Guidid你比较它的类型为int 。 所以,你可以改变你的方法来签名

public ActionResult IndividualOfficer(Guid id) 

而现在它应该能够编译。

另一种选择是在你的数据库模式改变你的ID列的int而不是uniqueidentifier (它成为System.Guid在.NET)。



文章来源: Operator == cannot be applied to Guid or int in Linq (MVC book example)