2016-05-23 4 views
2

Я не могу понять, как получить тип результата LINQ. Мой набор содержит как строки, так и bools, поэтому я столкнулся с трудностями, когда пытаюсь воздействовать на строки. Я приложил невероятно грубую тренировку, используя try/catch (для смеха), но мне больно, и я бы скорее знал правильный метод получения Типа.Какой тип будет возвращать метод поля?

private AppointmentInfoClass UpdateDataContext(DataSet phaseDataSet) { 

     var phaseCollection = new AppointmentInfoClass(); 
     var Type = phaseCollection.GetType(); 
     var properties = Type.GetProperties(); 

     var result = from DataRow myRow in DataBindings.CompanyAppsDataSet.Tables[0].Rows 
        where (int)myRow["AppointmentID"] == ApptID 
        select myRow; 

     var k = 0; 
     foreach (DataRow row in phaseDataSet.Tables[0].Rows) { 
      string header; 

      header = row.Field<string>("Header"); 

      foreach (var field in result) {  
       try { 
        properties[k].SetValue(phaseCollection, field.Field<string>(header)); 
       } 
       catch (Exception) { 

        properties[k].SetValue(phaseCollection, field.Field<bool>(header).ToString()); 
       } 
      } 
      k++; 
     } 
     return phaseCollection; 
    } 
+1

Что вы точно пытаетесь сделать здесь? Что такое 'header'? Обратите внимание, что ваш 'result' будет представлять собой набор объектов DataRow', поэтому перечисление через' result' не даст вам полей, а строк. – vesan

+0

Извините за отсутствие контекста, я обновил свое оригинальное сообщение с полной функцией. –

+0

Чтобы быть уверенным, вы сохраняете имя DataColumn, которое хотите получить (заголовок), в DataColumn с названием «Заголовок», и вы хотите определить тип DataColumn, имя которого хранится в «заголовке»? –

ответ

1

Она возвращает тип, который вы написали вместо типа

string s = field.Field<string>("ColumnName"); 

bool b = field.Field<bool>("ColumnName"); 
Смежные вопросы