Получить поле из динамически / программно названного имени столбца с помощью Entity Framework

c# entity-framework entity-framework-6

Вопрос

Я ищу метод для изменения имен столбцов и полей динамически / программно;

в виде:

string iLoadProfileValue = "ColumnName";

string lastCol = DatabaseFunctions.DatabaseClient
.tbl_MeterLoadProfile
.OrderByDescending(a => a.MeterReadDate)
.FirstOrDefault(a => a.MeterID == meterID).iLoadProfileValue;

Я буду изменять значение iLoadProfileValue программно. И я хотел бы получить значение этого столбца переменной lastCol .

Как это можно сделать?

Большое спасибо.

Готово:

Последняя ситуация вот так: СПАСИБО к thepirat000 и Dismissile

string iLoadProfileValue = "MeterReadDate";
var myEntity = DatabaseFunctions.DatabaseClient.tbl_MeterLoadProfile.OrderByDescending(a => a.MeterReadDate).FirstOrDefault(a => a.MeterID == 6);

if (myEntity != null)
{
    var properties = myEntity.GetType().GetProperty(iLoadProfileValue);
    object value = properties.GetValue(myEntity);
}

Принятый ответ

Вы можете использовать отражение, чтобы получить список свойств. Посмотрите на метод GetProperties () в System.Type.

http://msdn.microsoft.com/en-us/library/aky14axb(v=vs.110).aspx

public PropertyInfo[] GetProperties()

Затем вы можете использовать LINQ, чтобы найти свойство, которое перехватывает тот, который вы хотите:

var myEntity = DatabaseFunctions.DatabaseClient
    .tbl_MeterLoadProfile
    .OrderByDescending(a => a.MeterReadDate)
    .FirstOrDefault(a => a.MeterID == meterID);

if(myEntity != null) {
    var properties = myEntity.GetType().GetProperties();

    // iterate through the list of public properties or query to find the one you want
    // for this example I will just get the first property, and use it to get the value:
    var firstProperty = properties.FirstOrDefault();

    // get the value, it will be an object so you might need to cast it
    object value = firstProperty.GetValue(myEntity);
}

Как отметил thepirat000 в комментариях, если вы только заботитесь об одном свойстве, вы можете вызвать метод GetProperty(string name) вместо GetProperties() . Это, вероятно, было бы более эффективным, если бы вы заботились только об одном свойстве, и вы не отражаете все столбцы в своей организации.



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему