Здравствуйте, mDmitriy, Вы писали:
D>Всем привет!
D>D>public class Person
D>{
D> public string SurName;
D> public string FirstName;
D> public string Patronymic;
D>}
D>...
D>var inputList = new List<Person>()
D>{
D> new() { SurName = "Иванов", FirstName = "", Patronymic = "", },
D> new() { SurName = "", FirstName = "Иван", Patronymic = "", },
D> new() { SurName = "Иванов", FirstName = "Иван", Patronymic = "", },
D> new() { SurName = "", FirstName = "Иван", Patronymic = "Иванович", },
D> new() { SurName = "Иванов", FirstName = "Иван", Patronymic = "Иванович", },
D>};
D>
D>Есть более чем вероятное предположение, что все объекты из списка относятся к одному человеку.
D>Имеется ли более-менее вменяемый алгоритм, позволяющий это проверить и "схлопнуть" список в один максимально заполненный объект (как последний в списке), который и вернуть?
D>По принципу "пустое поле == заполненному или имеющему такое же значение"
D>Спасибо
D>PS. Количество элементов в списке может быть произвольным
Просто завести 3 переменные SurName,FirstName и Patronymic с начальными значениями "" и в цикле сравнивать с полями. Если переменная пуста, присваивать ей значение поля. Если не пуста — сравнивать ее с полем, при неравенстве — предположение неверно, при равенстве — ничего не делать.
После цикла создать новую Person с этими значениями, а список выкинуть.