我正在使用EF重建我们的报告系统,因为我们的旧系统使用了很多动态SQL(我知道不好),所以我想使用Linq来做,所以它使用参数化查询等。
在报告中,用户可以选择要查看的数据列。现在我如何获取这些值并使用Linq返回一个SQL语句并获取我需要的列?我想知道我是否应该打扰并只返回所有数据,然后只显示用户想要在屏幕上显示的列,这可能是我想要做的,但我想无论如何都要问。
所以让我们采取以下Linq示例,我说我只想要Id,Name和Town,我怎么能这样做。目前我有类似的东西
var columns = new List<string>() { "Id", "Name", "Town" };
return _context.Data
.Where(e => e.Name == "test")
.ToList();
这甚至可能吗?
答案 0 :(得分:1)
如果你想根据他们的名字选择属性,请尝试Dynamic LINQ library:
public List<Data> ListByNames(string[] arr)
{
var str = string.Format("new ({0})", string.Join(", ", arr));
return _context.Data.Select(str);
}
或者自己编写Expression
,请参阅@TomBrothers答案:https://stackoverflow.com/a/4546633/1271037
答案 1 :(得分:-1)
我知道这种问题。主要问题:使用EF,您不再处理列,而是属性。
尝试这样的事情:
var column="yourcolumn";
return _context.Data.Where(e => e.GetType().GetProperty(column).GetValue(_context, null)).ToList();