У меня есть список объектов StudentViewModel
. Я связываю этот список с DataGridView, а генерация столбца устанавливается на автоматический в соответствии с свойствами связанной модели.C# LINQ select property, если у него есть собственный атрибут
public async Task LoadGridView()
{
Tuple<List<StudentViewModel>, int> result = await App.StudentService.SearchAsync(studentRequestModel);
dataGridView1.DataSource = null;
dataGridView1.DataSource = result.Item1;
}
В StudentViewModel я украсили некоторые из свойств с помощью пользовательских атрибутов IsViewable
.
[AttributeUsage(AttributeTargets.Property)]
public class IsViewable: Attribute
{
public bool Value { get; set; }
}
использование:
[IsViewable(Value = true)]
public string Name { get; set; }
Идея, как раз перед переплетом с Control UI, я хочу, чтобы отфильтровать список и сделать новый список анонимного объекта, чтобы моя сетка будет заполняться только выбранные свойства.
Примечание: Я не хочу, чтобы создать отдельные модели представлений, характерные для сеток. Я буду реорганизовать его, если он создаст проблемы с производительностью.
Существует не способ динамически гена задайте анонимный тип, поскольку свойства должны быть известны во время компиляции. Вы можете использовать словарь для сопоставления имен и значений или заполнения «ExpandoObject» и использовать 'dynamic' для получения синтаксиса типа свойства. Либо это, либо создайте новые свойства 'o' и динамического копирования, которые имеют этот атрибут. –
Этот ответ может помочь: https://stackoverflow.com/a/4938442/1220550 –
Если я правильно понял, вы не хотите, чтобы эти свойства отображались 'DataGridView'. Если это то, что вы хотите, не можете ли вы достичь этого, используя атрибут '[Browsable (false)]' вместо вашего пользовательского 'IsViewable'? –