using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
public static void Main()
Console.WriteLine("Hello World");
public class MyType1Controller
private readonly ApplicationDbContext _context;
public MyType1Controller(ApplicationDbContext context)
public async Task Index(string numberOut)
var items1 = _context.Dbset1;
IQueryable<MyType2> items2 = items1.Select(item =>
NamesIQ = _context.Dbset2.Where(i => _context.Dbset3.Where(i => i.FaxInId == item.Id).Select(i => i.FaxOutId).Contains(i.Id)).Select(i => i.Numoutss),
IQueryable<MyType3> items3 = items1.Select(item =>
NamesList = _context.Dbset2.Where(i => _context.Dbset3.Where(i => i.FaxInId == item.Id).Select(i => i.FaxOutId).Contains(i.Id)).Select(i => i.Numoutss).ToList(),
var dbSet1 = new List<Dbset1> {
var dbSet2 = new List<Dbset2> {
new Dbset2 { Id = 101, Numoutss = "a" },
new Dbset2 { Id = 102, Numoutss = "b" },
new Dbset2 { Id = 103, Numoutss = "c" },
new Dbset2 { Id = 104, Numoutss = "d" },
var dbSet3 = new List<Dbset3> {
new Dbset3{ FaxInId = 11, FaxOutId = 102 },
new Dbset3{ FaxInId = 11, FaxOutId = 103 },
new Dbset3{ FaxInId = 13, FaxOutId = 104 },
IQueryable<MyType2> items2moq = dbSet1.Select(item =>
NamesIQ = dbSet2.Where(i => dbSet3.Where(i => i.FaxInId == item.Id).Select(i => i.FaxOutId).Contains(i.Id)).Select(i => i.Numoutss).AsQueryable(),
IQueryable<MyType3> items3moq = dbSet1.Select(item =>
NamesList = dbSet2.Where(i => dbSet3.Where(i => i.FaxInId == item.Id).Select(i => i.FaxOutId).Contains(i.Id)).Select(i => i.Numoutss).ToList(),
List<MyType3> itemsF = null;
itemsF = items3.ToList().Where(i => i.NamesList.Count > 0 &&
i.NamesList.All(i => i != null)).Where(i => i.NamesList.Any(i => i.Contains(numberOut))).ToList();
var listF = PaginatedList<MyType3>.Create(itemsF);
var list3 = await PaginatedList<MyType3>.CreateAsync(items3.AsNoTracking());
var list2 = await PaginatedList<MyType2>.CreateAsync(items2.AsNoTracking());
var list3F = await PaginatedList<MyType3>.CreateAsync(itemsF.AsQueryable().AsNoTracking());
var list3moq = await PaginatedList<MyType3>.CreateAsync(items3moq.AsNoTracking());
var list2moq = await PaginatedList<MyType2>.CreateAsync(items2moq.AsNoTracking());
public class ApplicationDbContext : DbContext
public ApplicationDbContext(){}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
public DbSet<Dbset1> Dbset1 { get; set; }
public DbSet<Dbset2> Dbset2 { get; set; }
public DbSet<Dbset3> Dbset3 { get; set; }
public class PaginatedList<T>
public long Count { get; set; }
public List<T> Items { get; set; }
public PaginatedList(List<T> items, int count)
public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source)
var count = await source.CountAsync();
var items = await source.ToListAsync();
return new PaginatedList<T>(items, count);
public static PaginatedList<T> Create(List<T> items)
return new PaginatedList<T>(items, items.Count);
public int Id { get; set; }
public IQueryable<string> NamesIQ { get; set; }
public int Id { get; set; }
public List<string> NamesList { get; set; }
public int Id { get; set; }
public int Id { get; set; }
public string Numoutss { get; set; }
public int? FaxInId { get; set; }
public int? FaxOutId { get; set; }