我有一个数据库与学术出版物,它们都有多个作者。我有一个页面,显示这些出版物的分页部分视图,并带有多个过滤选项,旨在同时使用多个过滤器。MVC 5 C#搜索多对多关系数据库
我已经能够实现所有其他过滤选项了,但给我带来麻烦的一个是作者筛选,用户可以键入作者的名称,它将返回任何出版物来自该作者。
这是一个代码优先数据库和出版物模型包含这样的:
public virtual ICollection<Author> Authors { get; set; }
同样地,在作者的模型:
public virtual ICollection<Publication> Publications { get; set; }
现在,我有控制器返回的部分如下所示:
Models.Author[] auth = db.Authors.Where(p => p.FullName.ToLower()
.Contains(searchAuthor).ToLower())).ToArray();
return PartialView("_PublicationList", await db.Publications
.Where(p => p.Authors.ToList().Contains(auth[0])).ToListAsync());
其中“searchAuthor”是视图中文本框中的值(我是l为简单起见,省去了其他过滤器)。
正如您所看到的,这只会搜索匹配的第一个作者。如果有人输入“Michael”,并且有不止一个Michael出资,它只会显示第一个Michael的搜索结果。
那么,我该怎么办呢?我一直在谷歌搜索几天,我还没有找到一个解决方案,返回与多个出版物和多个作者的部分视图。任何人都有解决方案?
因此,您希望获得与您的'searchAuthor'匹配的所有作者的所有出版物? –
对不起,不完全匹配,但包含名称中的字符串。 – clevergrant