这个 linq 查询有什么问题吗?

2023-12-26

我有一个产品表,其中标题为字符串。

在我看来,我有

    @using (Html.BeginForm("Serach","Store"))
        {

          <input type="text" name="q" class="searchbox_textbox" />
          <input  type="submit" class="searchbox_btn" />
          }

在我的控制器里面我有

        public ActionResult Serach(string q)
    {
        var result = storeDB.Products
                     .Where(p => p.Title.Contains(q) || string.IsNullOrEmpty(q));


        return View(result);

    }

当我运行该页面并输入一个单词来搜索它时,出现此错误

为函数指定的参数值无效。 [参数# = 1,函数名称(如果已知)= isnull ] 描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息:System.Data.SqlServerCe.SqlCeException:该函数的指定参数值无效。 [参数# = 1,函数名称(如果已知)= isnull ]

有什么问题?如果我想向用户显示一条消息,告诉他们您的搜索,我该怎么办 与任何产品都不匹配


好吧,您应该使用一些日志记录来找出实际发送到数据库的内容 - 但就我个人而言,我会在查询到达那里之前将其拆分:

public ActionResult Search(string q)
{
    var result = string.IsNullOrEmpty(q) ? storeDB.Products
                     : storeDB.Products.Where(p => p.Title.Contains(q));

    return View(result);
}

It's possibleSQL CE 支持的 SQL 方言不支持您正在使用的空性检查 - 这可以解决该问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这个 linq 查询有什么问题吗? 的相关文章

随机推荐