Linq-vb.net基于变量选择列

Linq-vb.net基于变量选择列,linq,vb.net,Linq,Vb.net,我们从表返回一组数据,需要根据变量选择一列 代码是 Dim columnNo as Integer = 1 Dim rs as IEnumerable(Of Object) = db.ImportTable For each rsRow in rs Dim columnF1 = rsRow.f1 'where the field name is f1 (this works fine) Dim columnVariable = rsRow."f" & columnNo 'This

我们从表返回一组数据,需要根据变量选择一列

代码是

Dim columnNo as Integer = 1

Dim rs as IEnumerable(Of Object) = db.ImportTable

For each rsRow in rs 
Dim columnF1 = rsRow.f1 'where the field name is f1 (this works fine)
Dim columnVariable = rsRow."f" & columnNo 'This line fails

感谢您的期待

对于一个小的性能点击,您可以使用:


这将按名称动态查找属性,然后在给定变量上反映该属性的值。请注意,如果属性名称无效,这将在运行时引发异常。

对于较小的性能影响,您可以使用:


这将按名称动态查找属性,然后在给定变量上反映该属性的值。请注意,如果属性名称无效,这将在运行时引发异常。

您所说的“此行失败”是什么意思?如果出现错误,请粘贴正确的错误getting@sinelaw当前位置在这种情况下,我认为这是很明显的。您不能以这种方式引用属性名称。@mellamokb true,但这不是问问题的方式“此行失败”是什么意思?如果出现错误,请粘贴正确的错误getting@sinelaw当前位置在这种情况下,我认为这是很明显的。您不能以这种方式引用属性名称。@mellamokb true,但这不是提问的方式。如果
rsRow
没有属性
(“f”&columnno)
=>的计算结果为f3(示例),那么对象引用错误将在该点发生。对吗?@rajarabhuaravindasamy:Correct,因为
GetProperty
的结果将是
Null
。如果
rsRow
没有属性
(“f”和columnno)
=>的计算结果为f3(示例),那么对象引用错误将出现在该点上。@rajaprabhuarvindasamy:正确,因为
GetProperty
的结果将是
Null
rsRow.GetType().GetProperty("f" & columnNo).GetValue(rsRow)