迭代linq实体列

时间:2009-12-02 12:55:44

标签: linq insert types

我需要使用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)
}
显然,我无法做到这一点,但这可能是......或者

是否可以循环使用新的'记录'列来设置值,因为我去了...我想在那时抓取类型来进行转换

难倒我

感谢 NAT

2 个答案:

答案 0 :(得分:0)

如果你有一些具有一百个不同属性的数据类型,并且你想将它们复制到一个具有一百个不同属性的完全不同的数据类型,那么在你的代码中的某个地方,你将不得不定义一百个不同的“映射“指令。使用什么框架无关紧要,或者“映射”指令是否是C#代码,XML元素,lambda函数,专有“东西”等等。没有远离它。

请注意,每个属性有一行代码对我来说就像是最快,最简单,最易读和可维护的解决方案。

答案 1 :(得分:0)

如果我理解你的问题,你可以使用反射(或动态代码生成,如果它是性能敏感的)来规避你的打字问题

有一个很好的描述如何做这样的事情at codeproject。 基本上你得到一个PropertyInfo你要设置的属性(如果它不是属性,我认为你需要动态代码生成)并使用它的setValue方法(在调用适当的Convert.ChangeType之后当然)。这将基本规避整个静态类型,所以你就是。