Я строю метод, который берет List<T>
и превращает его в DataTabe
.В процессе я хочу отфильтровать любые свойства, которые помечены атрибутом [NotMapped]
.
У меня весь метод работает, но я немного беспокоюсь об одной его части ... части, которая отсеивает свойства [NotMapped]
.Вот что у меня есть:
public static DataTable CreateDataTable<T>(IEnumerable<T> list)
{
Type type = typeof(T);
var properties = type.GetProperties().Where(p =>
p.CustomAttributes.ToList().Count == 0 ||
(p.CustomAttributes.ToList().Count > 0 && p.CustomAttributes.ToList()[0].AttributeType.Name != "NotMappedAttribute")
).ToList();
// Rest of the method...
}
Итак, это работает так, как мне бы хотелось, и избавляется от всего, что выглядит так (например), поэтому оно не заканчивается в финале.DataTable
:
[NotMapped]
public string Description { get; set; }
Я беспокоюсь о производительности и просто общем передовом опыте.Запрос var properties =
LINQ мне кажется неуклюжим, но я не вижу более эффективного способа его улучшить.
А именно, я не люблю звонить p.CustomAttributes.ToList()
3 раза.Есть ли способ избежать этого?