Как получить название свойства класса?

Предполагается, что первый столбец (со значениями R1, R2 и т. Д.) Имеет имя row (вы не говорите):

select row, 'Not present in table 2' as difference
from table_1
where row not in (select row from table_2)
union all
select row, 'Not present in table 1'
from table_2
where row not in (select row from table_1)
union all
select
  t1.row,
  concat(
    case when t1.c1 <> t2.c1 then 'c1 ' end,
    case when t1.c2 <> t2.c2 then 'c2 ' end,
    case when t1.c3 <> t2.c3 then 'c3 ' end,
    case when t1.c4 <> t2.c4 then 'c4 ' end,
    case when t1.c5 <> t2.c5 then 'c5 ' end
  )
from table_1 t1
join table_2 t2 on t1.row = t2.row
where t1.c1 <> t2.c1
   or t1.c2 <> t2.c2
   or t1.c3 <> t2.c3
   or t1.c4 <> t2.c4
   or t1.c5 <> t2.c5
21
задан orftz 30 May 2011 в 15:50
поделиться

3 ответа

Результатом ClassName.IntProperty является просто целочисленное значение. Как только это выполняется, и результат возвращается, нет никакой трассировки его прибывавший от IntProperty.

при использовании.NET 3.5, можно использовать дерево выражений, вместо этого, обычно создаваемое через лямбда-выражение:

Expression<Func<int>> exp = () => ClassName.IntProperty;

можно тогда скомпилировать и выполниться, выражение и отдельно узнают то, что оно делает (получение IntProperty в этом случае). Я не действительно уверен, подходит ли это для того, что Вы хотите сделать все же.

, Если Вы убираете работа, как сохранить имя свойства в базе данных, тогда GetProperty, способ пойти на переднюю сторону извлечения.

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

РЕДАКТИРОВАНИЕ: Вы развернули свойство, но не, как это называют. Вы потребность , чтобы назвать его непосредственно, вместо того, чтобы просто выбрать список свойств с помощью Type.GetProperties и храня список имен свойства в базе данных?

Снова, если Вы могли бы показать код, который вызовы свойство, и как Вы хотите, чтобы это взаимодействовало с базой данных, мы можем быть в состоянии сделать больше успехов.

8
ответ дан 29 November 2019 в 06:17
поделиться
Type objectType = this.GetType();
PropertyInfo property = objectType.GetProperty("intProperty");
System.Console.Write(property.Name);

это, в чем Вы нуждаетесь?

5
ответ дан 29 November 2019 в 06:17
поделиться

Я думаю, что использование метод GetProperty в этом случае, избыточно, потому что необходимо знать, что имя свойства называет метод.

Вы могли циклично выполниться через свои свойства и извлечь его имя:

foreach (PropertyInfo p in typeof(ClassName).GetProperties())
{
    string propertyName = p.Name;
    //....
}
29
ответ дан 29 November 2019 в 06:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: