2016-07-07 73 views
3

我有一个使用实体框架的Web API项目。我有一个行动api/account给予一个ID返回该帐户。实体框架从字符串中获取特定列

还有一个附加参数可以提供哪个字段被返回,例如, api/account?field=name

我正在努力解决从此字符串输入转换为实体框架的最佳方式。我知道我可以使用.Select()来获得某些列,但需要Func,我能想到的从字符串获取的唯一方法是使用Reflection。这似乎是一个性能问题,如果我必须为每个传入的属性进行反射,有没有更好的方法来做到这一点?

感谢

+0

,我仍然会从数据库中选择它们并使用一些代码(可能只是if/else语句)将想要的列映射到您从API返回的对象。 – Ryan

+0

我刚刚看到你的旧问题。我建议你不要构建动态查询来填充下拉菜单。只需为您需要的每种类型的数据创建一个特定的端点。 AccountID/Name only vs all account details。 – Ryan

+0

@Ryan这就是我的想法,为这些创建一个单独的端点。我只是想考虑如果我以后需要获取特定的领域,那么我们会采取动态的路线进行未来的打样。 – ADringer

回答

1

如果你真的需要你的API中返回列的动态子集可以使用这个库System.Linq.Dynamic从的NuGet,而这个查询

var selectStatement = string.Format("new ({0},{1})", field1, field2); 
var result = db.Users.Select(selectStatement).ToListAsync().Result;