Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从表单帖子中筛选数据库结果?_C#_Linq_Asp.net Core Mvc - Fatal编程技术网

C# 如何从表单帖子中筛选数据库结果?

C# 如何从表单帖子中筛选数据库结果?,c#,linq,asp.net-core-mvc,C#,Linq,Asp.net Core Mvc,我很确定,我的理解力不足,使我无法让它发挥作用 我目前有一个表单,它将过滤参数发布回控制器,然后它将建立查询。我构建的当前查询实际上没有做任何事情。至少当它像这样分开的时候 从我所读到的,类似的东西应该是有效的,但从我所测试的,它不是 [HttpPost] public async Task<IActionResult> FilterPost() { var query = _context.Products; query = query.OrderBy(m =>

我很确定,我的理解力不足,使我无法让它发挥作用

我目前有一个表单,它将过滤参数发布回控制器,然后它将建立查询。我构建的当前查询实际上没有做任何事情。至少当它像这样分开的时候

从我所读到的,类似的东西应该是有效的,但从我所测试的,它不是

[HttpPost]
public async Task<IActionResult> FilterPost()
{
    var query = _context.Products;
    query = query.OrderBy(m => m.Unit.Name)
         .Include(m => m.Unit)
         .Include(m => m.Attribute);

    foreach (var request in Request.Form)
    {
         var AttributeValue = request.Value;
         var AttributeName = request.Key;
         query = query.Where(m => m.Attribute.Name == AttributeName)
                      .Where(m => m.Value >= int.Parse(AttributeValue));
    }

    return RedirectToAction("Index");
}
[HttpPost]
公共异步任务FilterPost()
{
var query=_context.Products;
query=query.OrderBy(m=>m.Unit.Name)
.包括(m=>m.单位)
.包括(m=>m.Attribute);
foreach(request.Form中的var请求)
{
var AttributeValue=请求.值;
var AttributeName=request.Key;
query=query.Where(m=>m.Attribute.Name==AttributeName)
其中(m=>m.Value>=int.Parse(AttributeValue));
}
返回操作(“索引”);
}

这个方法可能已经被我对它所做的所有测试彻底破坏了

我以前研究过使用ExpressionTrees和DynamicLink。他们真的很有趣,也许有点过火,也许?我不知道。也许我的大脑太累了,看不到明显的答案


如果您能提出任何解决方案的建议或提示,我将不胜感激

另外,设置断点并检查
请求中的内容。此外,您还可以根据<代码>请求> /代码>字段过滤数据,但是在每个循环迭代中,过滤结果越来越多,因此必须仔细考虑。
另外,当重定向到
索引
时,您不会传递任何数据,我认为您应该在那里传递
查询的结果
,这样您就可以使用它并在那里显示它。所以我要看一下
RedirectToAction
的重载,比如
RedirectToAction(String,Object)
。或者,您可以查看
视图
方法,该方法具有与
重定向到操作
类似的功能


话虽如此,您应该传递查询结果,因此您需要获得查询结果,例如,通过调用
ToList
方法。

此外,设置断点并检查
请求中的内容。此外,您还可以根据<代码>请求> /代码>字段过滤数据,但是在每个循环迭代中,过滤结果越来越多,因此必须仔细考虑。
另外,当重定向到
索引
时,您不会传递任何数据,我认为您应该在那里传递
查询的结果
,这样您就可以使用它并在那里显示它。所以我要看一下
RedirectToAction
的重载,比如
RedirectToAction(String,Object)
。或者,您可以查看
视图
方法,该方法具有与
重定向到操作
类似的功能


话虽如此,您应该传递查询结果,因此您需要获得查询结果,例如,通过调用
ToList
方法。

您没有将任何模型传递回视图。查询产生的任何结果都保留在控制器中。请参阅RedirectToAction的重载或此答案,您应该返回结果以获得响应。“此方法可能已被我对其进行的所有测试彻底破坏。”-然后修复它。顺便说一句,很高兴把一个问题放在一起——它永远不会被执行。你重定向到/Index而不进行任何筛选。是的,它不会将任何内容发回索引,因为我只是使用断点来查看查询发生了什么。一步一个脚印。但我会采纳你所有的建议和建议,并努力把它灌输到我的脑袋里。谢谢。您没有将任何模型传递回视图。查询产生的任何结果都保留在控制器中。请参阅RedirectToAction的重载或此答案,您应该返回结果以获得响应。“此方法可能已被我对其进行的所有测试彻底破坏。”-然后修复它。顺便说一句,很高兴把一个问题放在一起——它永远不会被执行。你重定向到/Index而不进行任何筛选。是的,它不会将任何内容发回索引,因为我只是使用断点来查看查询发生了什么。一步一个脚印。但我会采纳你所有的建议和建议,并努力把它灌输到我的脑袋里。谢谢。这是一个post方法,因为他将表单发回控制器。@TomTom同意,但可以通过查询字符串参数来完成。Post方法(据我所知)应该用于修改数据,而不仅仅是获取数据。查询字符串参数,这就是它的名称。我想知道它叫什么,但它从来没有真正出现在一个它会在我脑海中点击的环境中。一些更深入的调查。由于缺乏与此相关的技术词汇,我对Form Post方法基本上感到厌烦。谢谢您的输入。这是一个post方法,因为他将表单发回控制器。@TomTom同意,但可以通过查询字符串参数来完成。Post方法(据我所知)应该用于修改数据,而不仅仅是获取数据。查询字符串参数,这就是它的名称。我想知道它叫什么,但它从来没有真正出现在一个它会在我脑海中点击的环境中。一些更深入的调查。由于缺乏与此相关的技术词汇,我对Form Post方法基本上感到厌烦。我感谢你的意见。