Непоследовательная информация в DataGrid с использованием List Concat c # wpf - PullRequest
0 голосов
/ 27 июня 2018

У меня есть одна таблица с именем Registry, в классе Registry. Содержит

  • Номер, Описание, People_id

People_id - это внешний ключ из таблицы People в классе People. Содержит

  • идентификатор, имя, дата рождения

Мне нужно показать все данные из таблицы реестра в DataGrid и возраст People_id (рассчитывается с датой рождения) в таблице реестра. Я уже могу получить все данные реестра и показать их в таблице данных, но мне не хватает части Age.

Я пытался с чем-то вроде этого. Получить данные реестра, чтобы получить даты рождения, выполнить расчеты и заполнить список только результатом возраста. Затем объедините два List с помощью метода Concat в новом List с именем CombRegistryAge, как показано ниже в первом методе.

public List<object> RegistryJoinAge()
    {          
        List<object> ResultAge = new List<object>();
        List<Registry> ListRegistry = new Registry().LoadRegistry();
           //method LoadRegistry retrieve all items in Registry table
        foreach (var item in ListRegistry)
        {
           var age = AgeCalculation(item.People.birth_date);
            ResultAge.Add(age);
        }

        List<object> CombRegistryAge = ListRegistry.Cast<object>().Concat(ResultAge).ToList();
        return CombRegistryAge;
    }

Для метода AgeCalculation просто начать тестирование

    private int AgeCalculation(DateTime birthdate)
    {
        var todayIs = DateTime.Today;
        int age = todayIs.Year - birthdate.Year;
        return age;
    }

Но когда я вызываю метод, используя List CombRegistryAge в сетке данных

datagrid_fillData.ItemsSource = RegistryJoinAge();

Я все еще получаю данные реестра внутри, но не Age, и я заметил, что из таблицы данных он добавляет пустые строки для каждого вычисленного возраста, но в действительности мне нужно, чтобы они отображались как единое целое, что-то вроде этого в таблице данных .

  • Id, Описание, People_id, Возраст
  • 101, пройдено, 1802, 35

Это мое сомнение. Возможно, это проблема со списком, потому что я попытался изменить порядок списков в методе concat, но он показал пустую сетку. Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 27 июня 2018

Я предлагаю вам создать класс UserRegistryModel для переноса ваших данных, которые могут связывать данные в datagrid.

public class UserRegistryModel
{
    public int Number { get; set; }
    public string Description { get; set; }
    public int People_id { get; set; }
    public int Age { get; set; }
}

Использование Лямбда select делает код более понятным.

public List<UserRegistryModel> RegistryJoinAge()
{

    List<UserRegistryModel> ListRegistry = new Registry().LoadRegistry()
    .select(x => new UserRegistryModel()
    {
        Number = x.Number,
        Description = x.Description,
        People_id = x.People_id,
        Age = AgeCalculation(x.People.birth_date)
    }).ToList();

    return ListRegistry;
}

Окончательный возврат UserRegistryModel Список

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...