我正在写这样一个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;
但是它给我错误
System.Linq.IQueryable ' 1[System.Int32]'但是这个问题并不能解决我的问题==不能应用于int和string类型的操作数
如何解决上述问题,谢谢
所以,我认为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#是类型安全语言,你不能比较int
和string
。在您的情况下,将整数值转换为其String表示形式更安全:
where c.CustomerID == "1"
你总是可以用.ToString()
方法调用来代替它。
我也强烈建议您检查您的模型,如果CustomerID
是一个整数,最好将其映射和存储为integer
而不是string
。