1)
https://metanit.com/sharp/tutorial/ Глава19
Пример только с метода расширения, мне они больше нравятся
https://dotnetfiddle.net/bFzudCusing System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var ivan = new User() { Id = 1, Name = "Ivan" };
var vasya = new User() { Id = 2, Name = "Vasya" };
var book1 = new Book() { Id = 1, Name = "1" };
var book2 = new Book() { Id = 2, Name = "2" };
var book3 = new Book() { Id = 3, Name = "3" };
var book4 = new Book() { Id = 4, Name = "4" };
book1.Users.Add(ivan);
book1.Users.Add(ivan);
book1.Users.Add(vasya);
book1.Users.Add(vasya);
book2.Users.Add(ivan);
book2.Users.Add(ivan);
book2.Users.Add(vasya);
book2.Users.Add(vasya);
book4.Users.Add(ivan);
var booksRepository = new List<Book>();
booksRepository.Add(book1);
booksRepository.Add(book2);
booksRepository.Add(book3);
booksRepository.Add(book4);
var result = booksRepository.Where(b => b.Users.Any(u => u.Name == "Ivan")).ToList();
foreach (Book book in result)
{
Console.WriteLine(book.Name);
}
}
public class User
{
public long Id {get;set;}
public string Name {get;set;}
// List<Book> ...
}
public class Book
{
public long Id {get;set;}
public string Name {get;set;}
public List<User> Users {get;set;}
public Book(){
Users = new List<User>();
}
}
}
И я так понял Books и Users имеют связи многие ко многим, т.е. откуда проще взять от туда и нужно делать запрос.
Проще было бы пойти от User, но по вашей таблице "Library", я так понял что это не так.
Возможно запись идет с датой, мол взял 10 раз и дата, условия может еще какие, по этой таблице и идет поиск, взял хотя бы 1 раз. "Any", "Contains" и т.п. с этим хорошо справятся.