在 MVC 中使用另一个 LINQ 对 LINQ 进行排序

Sort a LINQ with another LINQ in MVC

这里 materialnumb 这是一个 LINQ 查询,总是 return 只有一个值。 正在以下...

var materialnumb = (from r in db.MaterialNumber
                                   where r.MaterialNumber == 80254842
                                   select r.MaterialNumber);

我有另一个来自 SQL 视图的 LINQ 查询,它涉及其他几个 tables 和内部连接语句等等(包括之前的 table db.MaterialNumber ) 是这样的:

var query = (from r in db.SQLViewFinalTable
                                where r.MaterialNumber == Convert.ToInt32(materialnumb.MaterialNumber)
                                select r

我想根据从第一个查询中检索到的 material 编号对所有 material 进行排序,但是当我尝试将查询作为我的视图的模型传递时,它会抛出以下错误:

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression.

我认为这是因为查询是一个对象,即使它只有一个值,所以它不能转换为单个 Int32。 更重要的是,它没有被执行的查询,它只是一个查询...

那么,怎样才能达到我的目的呢?

附加信息:我尝试将查询转换到 "final" 查询之外。它仍然不起作用。 附加信息:这只是一个示例,真正的查询实际上还嵌入了其他几个查询,而其他查询中也包含其他查询,因此我需要一种实用的方法。 附加信息:我还尝试将查询转换为字符串,然后再转换为 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