【发布时间】:2015-09-25 15:28:14
【问题描述】:
我正在开发一个具有绘图工具的网站,该工具允许用户选择最多 3 个要在图表上显示的属性。
我有一个结构类似于以下的数据库:
public class MyClass
{
public decimal Field1 {get;set;}
public decimal Field2 {get;set;}
...
public decimal Field10 {get;set;}
}
我需要用户能够选择最多 3 个属性,然后在一个对象中返回这些属性。
public class MyResult
{
public decimal value1 {get;set;}
public decimal value2 {get;set;}
public decimal value3 {get;set;}
}
该网站包含三个下拉菜单,用户可以从 10 个字段中选择他们想要绘制为 value1、2 或 3 的字段。
因此,传递给控制器的值将是详细说明列名的字符串,但是由于 Linq 是强类型的,因此两者不能互换。
如何编写非强类型的 Linq 命令,而是使用用户传入的文本作为列名?
类似下面的内容本来是理想的,但行不通。
values.Select(x => new MyResult(){ value1 = "Field1", value2 = "Field5", value3 = "Field9"});
或者我只是以完全错误的方式看待这个问题?有没有更好的方法来实现这一点?
【问题讨论】:
-
您可以通过
Reflection进行此操作。 -
正如其他人所提到的,
Reflection是您在这里寻找的。但你应该知道reflection is an expensive operation,在这种情况下,它看起来可能真的会影响你的表现。 -
我发布了一个答案,如果它解决了你的问题,请告诉我。
标签: c# asp.net-mvc linq