私は学術出版物を持つデータベースを持っていますが、それらはすべて複数の著者を持っています。私は複数のフィルタを同時に使用するように設計された複数のフィルタリングオプションを備えた、これらのパブリケーションのページされた部分的なビューを表示するページを持っています。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"と入力し、貢献したマイケルが複数いる場合、最初のマイケルの検索結果のみが表示されます。
これはどうすればいいですか?私は数日間Googleを検索していましたが、複数の出版物や複数の著者が部分的な見解を返すための解決策は見つかりませんでした。誰にでも解決策がありますか?
あなたはあなたの 'searchAuthor'と一致するすべての著者のすべての出版物を取得したいですか? –
申し訳ありませんが、正確には一致しませんが、名前に文字列が含まれています。 – clevergrant