C# 按字符串值MVC 5搜索方法

C# 按字符串值MVC 5搜索方法,c#,asp.net-mvc,C#,Asp.net Mvc,作为项目的一部分,我需要找到一种通过字符串搜索对象并在视图中显示结果的方法。谢谢你的帮助。 在我的MainMedia视图中,我有一个侧节,我手动将字符串值传递给SearchMedia方法: @section SideBar{ <ul> <li> @Html.ActionLink("Astronomy", "SearchMedia", new {searchString = "Astronomy" })</li> <li&g

作为项目的一部分,我需要找到一种通过字符串搜索对象并在视图中显示结果的方法。谢谢你的帮助。 在我的
MainMedia
视图中,我有一个侧节,我手动将字符串值传递给
SearchMedia
方法:

@section SideBar{
<ul>        
    <li> @Html.ActionLink("Astronomy", "SearchMedia", new {searchString = "Astronomy" })</li>
    <li> @Html.ActionLink("World", "SearchMedia", new { searchString = "World" })</li>
    <li> @Html.ActionLink("Movies", "SearchMedia", new { searchString = "Movies" })</li>
</ul>
}
TagsEnum类

 public enum TagsEnum
    {
        [Display(Name = "Astronomy and space")]
        Astronomy,
        [Display(Name = "World around us")]
        World,
        [Display(Name = "Movies, video")]
        Movies
}
最后是
MediaMainController
SearchMedia
方法

public ActionResult SearchMedia(string searchString)
{
    db.Medias.Where(i => i.TagsEnum.ToString() == searchString);
    return View(db.Medias.OrderBy(it => it.Title));
}
据我所知,
。Where()
应该找到匹配项并返回一个对象,但它不起作用。我怎样才能解决它?也许还有其他方法可以做到这一点?多谢各位

更新 我把它改成这样:

var result = db.Medias.Where(TagsEnum => TagsEnum.ToString() == searchString);
 return View(result.OrderBy(it => it.title)); 
 public class MediaViewModel
    {
        public List<Media> media { get; set; }
        public List<Video> video { get; set; }

    }
但我仍然看不到按搜索排序的结果

更新2 我有一个类
MediaViewModel
,用于创建对象列表,如下所示:

var result = db.Medias.Where(TagsEnum => TagsEnum.ToString() == searchString);
 return View(result.OrderBy(it => it.title)); 
 public class MediaViewModel
    {
        public List<Media> media { get; set; }
        public List<Video> video { get; set; }

    }
我得到一个错误: 传入字典的模型项的类型为System.Linq.Enumerable+WhereListIterator 1[PhClub.Models.Media],但此字典需要PhClub.Models.MediaViewModel类型的模型项。 如果我把它设置为

`@model IEnumerable<PhClub.Models.Media>
    @foreach (var b in Model)
    {}`
`@model IEnumerable
@foreach(模型中的var b)
{}`
它表示,类型为“媒体”的值不能转换为字符串。
我想我需要改变
SearchMedia
方法来支持
MediaView
类,但我还没有弄明白。感谢您的帮助

您应该将其分配给一个变量并使用它

 var result = db.Medias.Where(i => i.TagsEnum.ToString() == searchString);
 return View(result.OrderBy(it => it.Title));

您应该将其分配给一个变量并使用它

 var result = db.Medias.Where(i => i.TagsEnum.ToString() == searchString);
 return View(result.OrderBy(it => it.Title));

“它不起作用”很少是一个好的问题陈述。您是没有得到任何结果,还是某种类型的异常?它不是对结果进行排序,只是显示每个对象,好像搜索方法没有启动一样。您没有使用where子句的结果。在return语句中,您只是将整个DbSet排序为Media表。@sajeetharan的答案纠正了这一点。你重建了你的项目吗?正在尝试,VS崩溃了,现在我在ApplicationDbContext命名空间中出现了一些错误。。。一旦我解决了它,我会重新尝试。“它不工作”很少是一个好的问题陈述。您是没有得到任何结果,还是某种类型的异常?它不是对结果进行排序,只是显示每个对象,好像搜索方法没有启动一样。您没有使用where子句的结果。在return语句中,您只是将整个DbSet排序为Media表。@sajeetharan的答案纠正了这一点。你重建了你的项目吗?正在尝试,VS崩溃了,现在我在ApplicationDbContext命名空间中出现了一些错误。。。一旦我把它整理好,我会重新尝试一下。我是否理解正确,我需要这样修改它:var result=db.Medias.Where(TagsEnum=>TagsEnum.ToString()==searchString);因为我在课堂上没有任何i参数?如果是这样,我尝试了它,但它仍然没有进行搜索,因为我仍然显示未排序的所有对象。我是否正确理解,我需要这样更改它:var result=db.Medias.Where(TagsEnum=>TagsEnum.ToString()==searchString);因为我在课堂上没有任何i参数?如果是这样,我尝试了它,但它仍然没有进行搜索,因为我仍然显示所有未排序的对象。