Предполагается, что первый столбец (со значениями 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
Результатом ClassName.IntProperty
является просто целочисленное значение. Как только это выполняется, и результат возвращается, нет никакой трассировки его прибывавший от IntProperty
.
при использовании.NET 3.5, можно использовать дерево выражений, вместо этого, обычно создаваемое через лямбда-выражение:
Expression<Func<int>> exp = () => ClassName.IntProperty;
можно тогда скомпилировать и выполниться, выражение и отдельно узнают то, что оно делает (получение IntProperty
в этом случае). Я не действительно уверен, подходит ли это для того, что Вы хотите сделать все же.
, Если Вы убираете работа, как сохранить имя свойства в базе данных, тогда GetProperty
, способ пойти на переднюю сторону извлечения.
, Возможно, если Вы могли бы дать больше контекста в вопросе с точки зрения того, как Вы хотите использовать это, мы могли помочь больше. Вы показали просто выражение - если бы Вы могли бы показать его с точки зрения того, где Вы использовали бы его, который будет большим.
РЕДАКТИРОВАНИЕ: Вы развернули свойство, но не, как это называют. Вы потребность , чтобы назвать его непосредственно, вместо того, чтобы просто выбрать список свойств с помощью Type.GetProperties
и храня список имен свойства в базе данных?
Снова, если Вы могли бы показать код, который вызовы свойство, и как Вы хотите, чтобы это взаимодействовало с базой данных, мы можем быть в состоянии сделать больше успехов.
Type objectType = this.GetType();
PropertyInfo property = objectType.GetProperty("intProperty");
System.Console.Write(property.Name);
это, в чем Вы нуждаетесь?
Я думаю, что использование метод GetProperty в этом случае, избыточно, потому что необходимо знать, что имя свойства называет метод.
Вы могли циклично выполниться через свои свойства и извлечь его имя:
foreach (PropertyInfo p in typeof(ClassName).GetProperties())
{
string propertyName = p.Name;
//....
}