我有一个
class A {
public int X;
public double Y;
public string Z;
// and more fields/properties ...
};
和一个List<A> data
并且可以构建一个 linq 查询,例如
var q = from a in data where a.X > 20 select new {a.Y, a.Z};
然后 dataGridView1.DataSource = q.ToList();
在我的 DataGridView 中显示选择。
现在的问题是,是否可以根据用户在运行时输入的文本构建查询?喜欢
var q = QueryFromText("from a in data where a.X > 20 select new {a.Y, a.Z}");
关键是,用户(具有编程技能)可以动态自由地选择显示的数据。
最佳答案
Dynamic Linq宝贝!
重新评论。
是的,使用 Dynamic Linq 可能无法实现所写的示例,但是如果您分解出常量,例如'from a in data' 你剩下一个 'where' 和一个 'select' 可以用动态 linq 来表达。
所以两个文本框,如果包含 orderby,可能是三个,可能会满足您的要求。
只是一个想法。
Jon 有一个有趣的方法,但我对编译和执行不受限制的代码持怀疑态度。
关于c# - 如何在运行时从文本构建 LINQ 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661576/