Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# 在ASP.NET MVC中搜索标记_C#_Asp.net Mvc_Entity Framework_Search - Fatal编程技术网

C# 在ASP.NET MVC中搜索标记

C# 在ASP.NET MVC中搜索标记,c#,asp.net-mvc,entity-framework,search,C#,Asp.net Mvc,Entity Framework,Search,我的代码中有一个解决方案模型: public class Solution { public int Id { get; set; } [Required] public string Title { get; set; } [AllowHtml] [UIHint("tinymce_full")] public string Answer { get; set; } [Required] [Display(Name = "Ta

我的代码中有一个解决方案模型:

public class Solution
{
    public int Id { get; set; }

    [Required]
    public string Title { get; set; }

    [AllowHtml]
    [UIHint("tinymce_full")]
    public string Answer { get; set; }

    [Required]
    [Display(Name = "Tags")]
    public [] string Tag { get; set; }

    public virtual Printer Printer { get; set; }
}
这是我的控制器:

    public async Task<ActionResult> Index(int? id, string searchString, string msg = "")
    {

        var category = await db.Printers.FindAsync(id);

        var c = new ViewModels()
        {
            Printers = db.Printers.OrderByDescending(x => x.Id).ToList(),
            Solutions = db.Solutions.OrderByDescending(x => x.Id).ToList()
        };

        if (!string.IsNullOrEmpty(searchString))
            c = new ViewModels()
            {
                Printers = db.Printers.OrderByDescending(x => x.Id).ToList(),
                Solutions = db.Solutions.Where(
                    x => x.Title.ToUpper().Contains(searchString.ToUpper())).ToList()
            };

        return View(c);
    }
公共异步任务索引(int?id,string searchString,string msg=”“)
{
var category=await db.Printers.FindAsync(id);
var c=新的视图模型()
{
Printers=db.Printers.OrderByDescending(x=>x.Id).ToList(),
Solutions=db.Solutions.OrderByDescending(x=>x.Id).ToList()
};
如果(!string.IsNullOrEmpty(searchString))
c=新的ViewModels()
{
Printers=db.Printers.OrderByDescending(x=>x.Id).ToList(),
Solutions=db.Solutions.Where(
x=>x.Title.ToUpper().Contains(searchString.ToUpper()).ToList()
};
返回视图(c);
}
我正在向数据库添加标记,在字符串数组中用逗号分隔。与搜索精确字符串的默认搜索不同,我希望能够通过数据库中字符串数组中的任何标记来搜索解决方案,这样,如果解决方案标题是“如何修复打印机卡纸”,我可以通过标记(例如“打印机卡纸”)来查找解决方案

我不知道如何才能做到这一点。
任何帮助都将不胜感激,谢谢。

。并删除您查询中的所有
ToList()
,谢谢@StephenMuecke,但是如果我不使用
ToList()
,我将如何在视图中列出它们?您需要了解自己在做什么。假设您的数据库中有10万条记录。调用
.ToList()
将从数据库中获取所有这些内容,然后根据
searchString
只需要少量内容。删除
.ToList()
,您将使用
IQueryable
,这意味着您只能从数据库中获得所需的记录。您只需搜索标题。您还必须搜索标记,因此必须稍微修改查询。尝试更改
Solutions=db.Solutions.Where(x=>x.Title.ToUpper().Contains(searchString.ToUpper())| x.Tag.ToUpper().Contains(searchString.ToUpper())
@StephenMuecke谢谢您的建议。。我已经在重构了。