using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
public static void Main()
var deserializedCustomers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Customer>>(GetSerializedCustomers());
FiddleHelper.WriteTable("1 - DeserializedCustomers", deserializedCustomers);
using (var context = new EntityContext())
var customers = GetFromGenericContains(deserializedCustomers);
FiddleHelper.WriteTable("3 - WhereBulkNotContains + Lambda Expression", customers);
public static List<T> GetFromGenericContains<T>(List<T> items) where T : class
using (var context = new EntityContext())
return context.Set<T>().WhereBulkContains(items, new List<string> { "Code" }).ToList();
public static void SeedDatabase()
using (var context = new EntityContext())
var list = new List<Customer>();
for (int i = 0; i < 5; i++)
list.Add(new Customer() { Code = "Original_" + i, Email = "Original_" + i, FirstName = "Original_" + i, LastName = "Original_" + i });
context.BulkInsert(list);
public static string GetSerializedCustomers()
var customers = new List<Customer>();
for (int i = 0; i < 3; i++)
customers.Add(new Customer() { CustomerID = i + 1, Code = "Original_" + i, Email = "Updated_" + i, FirstName = "Updated_" + i, LastName = "Updated_" + i });
return JsonConvert.SerializeObject(customers);
public class EntityContext : DbContext
using (var context = new EntityContext())
context.Database.EnsureCreated();
public DbSet<Customer> Customers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseSqlServer(new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()));
base.OnConfiguring(optionsBuilder);
public int CustomerID { get; set; }
public string Code { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }