我有 2 個物體:
- 圖書;
- 流派;
他們有一個多對多的關系:
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public List<Genre> Genres { get; set; }
}
public class Genre
{
public int Id { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; }
}
任務是實作按型別搜索。
使用流派 ID 的串列/陣列,查找包含陣列中所有流派的所有書籍。結果可能包括包含其他型別的書籍,但它們必須具有請求的型別。
使用這樣的東西:
var genres = _db.Genres.Where(g => genresIdList.Contains(g.Id)).ToList();
var books = _db.Books.Where(b => genres.All(b.Genres.Contains));
導致例外。
uj5u.com熱心網友回復:
使用以下查詢:
var books = _db.Books.Where(b => b.Genres.Any(g => genresIdList.Contains(g.Id)));
uj5u.com熱心網友回復:
我的問題的解決方案是:
var genres = _db.Genres.Where(g => genresIdList.Contains(g.Id));
var books = books.Where(b => genres.All(genre => b.Genres.Contains(genre)));
洗掉 Genre 的 ToList() 并稍微更改 LINQ 查詢后,例外消失了。
感謝所有試圖提供幫助的人:)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515618.html
上一篇:無法翻譯LINQ
