检索数据LINQ vs Reflection

时间:2011-12-01 16:14:06

标签: c# linq reflection

我希望有人能告诉我哪种方法可以更有效和/或更正确地检索数据。

我有一些XML文件来自第三方及其附加的DTD。所以我已经将DTD转换为C#类,因此我可以将XML反序列化为类。我现在需要映射该数据以匹配我的数据结构的设置方式。

问题最终是;我应该使用反射或LINQ。 XML的格式在某种程度上是通用的,其中的东西保存在Items [Array]或Item [Object]中。

我做了以下事情:

TheirClass class = theirMessage.Items.Where(n=> n.GetType() == typeof(TheirClass)).First() as TheirClass;

MyObject.Param1 = ConversionHelperClass.Convert(class.Obj1);
MyObject.Param2 = ConversionHelperClass.Convert(class.Obj2);

我也可以用Reflection做一些事情,我传递了我试图阻止的类和属性的名称。

在这里尝试以正确的方式做事。

1 个答案:

答案 0 :(得分:5)

作为一般规则,我建议避免反思,除非绝对必要!它引入了性能开销,意味着你错过了编译器团队努力工作的所有可爱的编译时检查。

Linq to entities本质上是对内存数据集进行查询,因此它可以非常快。

如果您的最终目标是解析xml文档中的信息,我建议您查看XDocument class。它为查询xml文档提供了一个非常好的抽象。