У меня есть два набора списков ниже:
Информация о списке 1
ID = 1
PersonFirstName = Sarah
PersonLastName = Smith
PersonFavoriteFood = Pizza
PersonFavoriteColor = PurplePersonFavoriteFlower = Lily
Список 2 Инфо
ID = 1
PersonFirstName = Sarah
PersonLastName = Smith
PersonFavoriteFood = Гамбургер
PersonFavoriteColor = Желтый
PersonFavoriteFlower = Роза
Как видите, Сара Смит пришла в какую-то систему и изменила свою любимую еду, любимый цвет и любимый цветок.Если ее менеджер зайдет в это приложение и откроет его, он увидит три строки в истории записи Сары Смит:
Дата изменения = 2/16
Поле изменения = PersonFavoriteFood
Исходное значение= Пицца
Измененное значение = Гамбургер
Изменено = Сара Смит
Дата изменения = 2/16
Поле изменено = PersonFavoriteColor
Исходное значение = Фиолетовый
Измененное значение = Желтый
Изменено = Сара Смит
Дата изменена = 2/16
Поле изменено = PersonFavoriteFlower
Исходное значение = Лилия
Изменено значение = Роуз
Изменено = Сара Сара Смит
Три строки, которые он видит, должны быть сохранены в базе данных таким образом.Таким образом, это одна таблица с двумя строками (исходная строка и измененная строка) и другая таблица с таким количеством строк, сколько было изменений и каковы были эти изменения (еда, цвет, цветок).Я легко могу получить первую таблицу с оригинальной и измененной строкой.Мне не нравится мой код VB.NET, проходящий через LINQ в этих двух списках (исходный и измененный).Моя мысль состоит в том, чтобы выбрать значение из каждого столбца в каждом списке, определить, отличается ли оно, затем сохранить его в другой таблице, если нет, затем получить следующий столбец из каждого списка и сравнить.Но есть ли более простой способ?
Мой код ссылки:
Dim columnvalue1 = from a in OriginalList select a.column1
Dim columnvalue2 = from b in ChangedList select a.column1
If columnvalue1 = columnvalue2 then
SaveDifferencesToTable(colomnvalue1, columnvalue2)
End If
Если есть лучший способ, даже если он находится за пределами LINQ, пожалуйста, дайте мне знать.Я могу сделать это таким образом, но я волнуюсь, что это неправильный способ сделать это.Я также использую Entity Framework.