1- я загружаю список лиц из CSV-файла и сохранить его в списке загружаю также список лиц из БД и сохранить его в спискеПроверьте список объектов уже существует в другом списке объектов
как я могу получить пользователей, которые они находятся в файле csv, но не в базе данных?
Например: DB имеет 5 пользователей (А, В, С, D, Е), CSV имеет 4 пользователей (В, Е, Q, P) код должен возвращать список пользователей (Q, P)
public class Person
{
public string UserName { get; set; }
public int Age { get; set; }
}
public class App
{
private IEnumerable<Person> usersDb;
private IEnumerable<Person> usersCsv;
public App(int age)
{
usersDb = GetUsersFromDb(age);
usersCsv = GetUsersFromCsv(age);
}
public void AddMissingUsers()
{
var missingUsers = usersCsv.Where(x => !usersDb.Any(y => x.UserName.Trim().ToUpper().
Equals(y.UserName.Trim().ToUpper()))); //I tried this one
// add to database
}
}
Дополнительный вопрос
Ps: Я использую сущности framwork 6 есть лучший способ, чтобы выполнить задачу, показанную в моем коде? установить все пользователи из базы данных, а затем проверить, существует ли это?
С другой стороны, если я делаю обратное и проверяю каждую строку в моем файле csv, если он существует в databse, это также может быть длительным, поскольку файл может содержать много строк.
Что случилось с вашей попытки? Это не выглядит явно неправильно. Кроме того, чувствительность к регистру обычно определяется в сопоставлении базы данных, поэтому вам может не понадобиться называть «ToUpper» вообще – Rob
. Вы также можете посмотреть ['MERGE в SQL Server'] (https://msdn.microsoft.com/ru -AU/library/bb510625.aspx) - это означает, что вы выгружаете новый файл во временную таблицу и объединяете результаты (в этом случае просто вставляйте, когда не сопоставляетесь), затем отбрасывайте временную таблицу. Очень быстро для больших объемов данных. – Rob