==操作符不能应用于int和string类型——LINQ语句



我正在写这样一个LINQ语句

var v1 = from c in context.Orders
         join c1 in context.Order_Details
         on c.OrderID equals c1.OrderID
         where c.CustomerID == 1
         group c1 by c1.ProductID into x
         select x;

但是它给我错误

==不能应用于int和string类型的操作数

System.Linq.IQueryable ' 1[System.Int32]'但是这个问题并不能解决我的问题

如何解决上述问题,谢谢

所以,我认为c.CustomerID是一个字符串(与ID属性一样常见),这就是问题所在。如上所述,这不是Linq的问题。

话虽如此,要解决这个问题,只需替换

where c.CustomerID == 1

where c.CustomerID == "1"

如果你有一个int变量而不是常量,你可以在它上面调用ToString():

where c.CustomerID == myInt.ToString()

这对double和float不起作用,所以要小心!

消息不言自明,它清楚地表明"不能应用于int和string类型的操作数"。现在看看条件where c.CustomerID == 1,这里1是整数,c.CustomerID是字符串,所以你最好像下面这样做:

where c.CustomerID == "1"

c#是类型安全语言,你不能比较intstring。在您的情况下,将整数值转换为其String表示形式更安全:

where c.CustomerID == "1"

你总是可以用.ToString()方法调用来代替它。

我也强烈建议您检查您的模型,如果CustomerID是一个整数,最好将其映射和存储为integer而不是string

最新更新