Я думаю, что понимаю. Вы говорите, что вам не нужен фильтр, вы уже это сделали; вы хотите получить сопоставленное имя столбца. Сначала см. this answer.
Это говорит, на основе ответа @John Арлен в:
foreach (var prop in data[0].GetType().GetProperties())
{
Console.WriteLine("{0}, Type {1}", prop.Name, prop.PropertyType);
}
Проблема здесь заключается в том, что это должно нормально дать вам:
prop1, *some type*
prop2, *some type*
prop3, *some type*
Путаница в том, что вы каким-то образом указать столбцы перед вами знать имена, и все же в вашем примере кода вы :, используя имена столбцов. Указанные столбцы должны совпадать с именами столбцов; prop1
в вашем коде должен соответствовать столбцу prop1
в источнике данных. Вы подразумевали, что хотите отфильтровать, какие столбцы получить (а какие столбцы - , а не get), основанные на именах столбцов.
Таким образом, предполагается, что вы уже заранее знаете , какие нумерации вы должны найти по следующим другим (неуказанным) критериям:; то есть, если вы знаете, что получаете prop1
, prop2
и prop3
, но не propX
или propY
. Очевидно, вы не можете получить имена столбцов/свойств до, вы фильтруете столбцы/свойства, если вы не знаете имена.
Редактировать
Это происходит со мной, что вы можете хотеть, чтобы определить, какие поля наполняется, и которые не являются. Это может работать, если вы знаете , что ни одно из полей не равны нулю:
foreach (var prop in data[0].GetType().GetProperties())
{
if (prop.GetValue(data[0], null) != null)
Console.WriteLine("{0}, Type {1}", prop.Name, prop.PropertyType);
}
Edit 2
Также см this SO question.
'typeof (DataType) .GetProperties(). Где (p => p.Name.Содержит («что-то»)). Выберите (p => p.Name) 'вернет имена всех свойств, содержащих« что-то ». Вы можете использовать это предложение 'Where()' для фильтрации на что угодно. Вместо 'select new DataResult' вы можете использовать анонимный объект, который просто содержит поля, которые вы ищете. Например, http://stackoverflow.com/questions/3645494/how-can-anonymous-types-be-created-using-linq-with-lambda-syntax. – Steve
Если я выбираю анонимный, я получаю ошибку, которая не может преобразовать anonymoustype в IList или IEnumerable. Но что тогда было бы полезно использовать анонимность над указанием типа? – usefulBee
Он также работает над анонимным типом: var s = x.GetType(). GetProperties(). Где (p => p.Name.Contains («something»)). Выберите (p => p.Name) .FirstOrDefault(); ' – sallushan