2013-10-08 4 views
2

Я пытаюсь найти некоторые ссылки на LINQ с динамическим добавил сильные типы, статические У меня есть, как в примере:LINQ и динамические сильные типы

 var rowColl = _data.AsEnumerable(); 
     var json = (from r in rowColl 
        select new 
        { 
         name = r.Field<string>("name"), 
         id = r.Field<int>("id"), 
        }).ToList(); 

Теперь, когда мне интересно, если его можно сделать «имя» и «id» динамически добавляются во время выполнения, поскольку информация доступна в DataTable «_data», я думаю, что есть простое решение для этого, но не найдено ссылок на это

+0

Nope. Компилятор создает для вас анонимный класс во время компиляции. Тем не менее, можно создавать новые типы во время выполнения. См. Пространство имен Reflection.Emit. – sircodesalot

+0

и не простое решение, я уверен, что я не первый, у кого есть этот вопрос. –

+0

'Reflection.Emit' действительно требует некоторой практики. Решительно не для начинающих. – sircodesalot

ответ

0

Лучше избегать использования «var» as ваш тип, когда это возможно. Похоже, что rowColl имеет тип IEnumerable <DataRow>. Если это правда, я бы посмотрел, что вы можете использовать в классе DataRow (см. msdn documentation).

Учитывая, что rowColl на самом деле IEnumerable <DataRow> ... Если столбцы всегда будут в одном порядке, тогда вы можете просто сделать что-то вроде r [0] и r [1] в своем заявлении select, т.е.

var json = (from r in rowColl 
      select new 
      { 
       name = r[0], // Where 0 is the index of the "name" column 
       id = r[1], 
      }).ToList(); 

Если он жалуется на вас безопасность типов, то вы могли бы использовать int.Parse() для приведения строки в междунар и использовать расширение .ToString() на столбцах вместо этого.

+0

Не связанные с вопросом –

Смежные вопросы