Ali Majed HA Ответов: 1

C# entity framework select columns using loop


У меня есть таблица в моей базе данных, имена полей которой похожи:
X1, X2, X3, ... , X10

Я хочу выбрать значение этих столбцов и присвоить его переменной. Я не хочу писать:
V[1] = _MyTable.X1; 
V[2] = _MyTable.X2;
.
.
.
V[10] = _MyTable.X10;


Я ищу что - то вроде петли:
for (int i=1; i<=10; i++) 
{
    string _FieldName = "X" + i;
    V[i] = _MyTable._FieldName
}


Использование C# и EF.

Что я уже пробовал:

Я читал рядом подобные вопросы в интернете, но я не мог найти свой ответ.

1 Ответов

Рейтинг:
0

David_Wimbley

Что вам нужно, так это использовать нечто, называемое рефлексией.

c - поиск в Google[^]

Отражение (C#) | Microsoft Docs[^]

Как Отражение C# Работает С Примерами Кода[^]


Чтобы конкретно достичь того, чего вы хотите, вам нужно будет сделать что-то вроде этого

var entity = new MyEntity();
            entity.X1 = "ValueX1";
            entity.X2 = "ValueX2";
            entity.X3 = "ValueX3";
            entity.X4 = "ValueX4";
            entity.X5 = "ValueX5";
            entity.X6 = "ValueX6";
            entity.X7 = "ValueX7";
            entity.X8 = "ValueX8";
            entity.X9 = "ValueX9";
            entity.X10 = "ValueX10";


            for (int i = 1; i <= 10; i++)
            {
                var propertyName = string.Format(@"X{0}", i);
                var value =      entity.GetType().GetProperty(propertyName).GetValue(entity, null);
// You get the type from the class/object, then the property name (you have to build it since you have weird property names), then make a call to get value on your object to get the properties value.

                Console.WriteLine("Property {0} - Value {1}", propertyName, value);
            }


Указанное решение возвращается

Цитата:
Свойство X1 - Значение ValueX1
Свойство X2 - Значение ValueX2
Свойство X3 - Значение ValueX3
Свойство X4 - Значение ValueX4
Свойство X5 - Значение ValueX5
Свойство X6 - Значение ValueX6
Свойство X7 - Значение ValueX7
Свойство X8 - Значение ValueX8
Собственность Х9 - Значение ValueX9
Свойство X10 - Значение ValueX10