перебор столбца сущности linq - PullRequest
0 голосов
/ 02 декабря 2009

мне нужно вставить запись с linq

У меня есть namevaluecollection с данными из формы сообщения .. так началось в формате name=value&name2=value2 и т.д .. типа

Дело в том, что мне нужно вставить все эти значения в таблицу, но, конечно, поля таблицы набраны, и мне нужно набрать данные перед их вставкой

я мог бы, конечно, явно сделать

linqtableobj.columnproperty = convert.toWhatever(value);

но у меня много столбцов в таблице, и данные, возвращаемые из формы, не всегда содержат все поля в таблице

думал, что мог бы перебирать столбцы объектов linq, получая их тип данных - чтобы использовать для преобразования соответствующего значения из данных формы хорошо все хорошо, но тогда я все еще застрял в выполнении

linqtableobj.columnproterty = converted value

... если есть один для каждого столбца в таблице

foreach(col in newlinqrowobj)
{
    newlinqobj[col] = convert.changetype(namevaluecollection[col.name],col.datatype)
}

ясно, что я не могу этого сделать, но все, что возможно, возможно ... или

возможно ли зацикливаться вокруг столбцов для новой 'записи', устанавливая значения по мере того, как я иду ... и я предполагаю захват типов в этой точке, чтобы выполнить преобразование

в тупик я

спасибо физ

Ответы [ 2 ]

0 голосов
/ 02 декабря 2009

Если я правильно понял вашу проблему, вы можете использовать рефлексию (или динамическую генерацию кода, если она чувствительна к производительности), чтобы обойти ваши проблемы с печатанием

Есть хорошее описание того, как сделать что-то подобное в codeproject . По сути, вы получаете PropertyInfo для свойства, которое вы хотите установить (если это не свойство, я думаю, вам понадобится динамическая генерация кода) и используете его метод setValue (после вызова соответствующего Convert.ChangeType, конечно). Это обойдет всю статическую типизацию, так что вот и все.

0 голосов
/ 02 декабря 2009

Если у вас есть какой-то тип данных с сотней разных свойств, и вы хотите скопировать их в совершенно другой тип данных с сотней разных свойств, то где-то в вашем коде вам нужно будет определить сотню разных " картирование "инструкции. Неважно, какую платформу вы используете, или являются ли инструкции «отображения» строками кода C #, элементами XML, лямбда-функциями, проприетарными «вещами» или чем-то еще. От этого никуда не деться.

Учитывая это, наличие одной строки кода на свойство выглядит для меня как самое быстрое, простое, удобочитаемое и поддерживаемое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...