- 使用 SQL Server Management
- 使用 MVC VS 2013 网页版
- 在控制器中
在这里,materialnumb 它是一个始终只返回一个值的 LINQ 查询。作为以下...
var materialnumb = (from r in db.MaterialNumber
where r.MaterialNumber == 80254842
select r.MaterialNumber);
我有一个来自 SQL 视图的 LINQ 查询,该查询涉及其他几个具有内部连接语句等的表(其中包括上一个表 db。材料编号)是这样的:
var query = (from r in db.SQLViewFinalTable
where r.MaterialNumber == Convert.ToInt32(materialnumb.MaterialNumber)
select r
我想按第一个查询中检索到的材料编号对所有材料进行排序,但是当我尝试将查询作为我的视图的模型传递时,它会丢弃以下错误:
LINQ to 实体无法识别方法 'Int32 ToInt32(System.String)' 方法,并且此方法无法翻译 到存储表达式中。
我认为这是因为查询是一个对象,即使它只有一个值,因此无法转换为单个 Int32。更重要的是,查询它没有被执行,它只是一个查询......
那么,如何才能实现我的目标呢?
其他信息:我尝试在"最终"查询之外转换查询。它仍然不起作用。附加信息:这只是一个例子,真正的查询实际上嵌入了更多其他查询,并且其他查询中也有其他查询,所以我需要一个实用的方法。附加信息:我还尝试将查询转换为字符串,然后再次转换为 int。
试试这个:
var materialnumb = (from r in db.MaterialNumber
where r.MaterialNumber == 80254842
select r.MaterialNumber).FirstOrDefault();
var query = from r in db.SQLViewFinalTable
where r.MaterialNumber == materialnumb
select r
但是我无法得到你是否通过80254842过滤并选择相同的值?您可以直接执行以下操作:
var query = from r in db.SQLViewFinalTable
where r.MaterialNumber == 80254842
select r