Q
动态LINQ查询
3
A
回答
4
最终,是的;但它不是简单的,你会需要:
- 学习表达API
- 使用预轧动态LINQ库(从样品中下载)
如果你想去第一个选项,那么你需要创建自己的lambda表达式;想象一下,例如,您有类似(胡编这里...):
<Filters>
<Add Prop="Foo">My filter value</Add>
</Filters>
那么你就需要做一些事情,如:
XElement filters = ...; // the "Filters" element
IQueryable<Customer> query = ...; // your raw (unfiltered) query
foreach(var filter in filters.Elements("Add")) {
var param = Expression.Parameter(typeof(Customer), "row");
var body = Expression.Equal(
Expression.PropertyOrField(param, (string)filter.Attribute("Prop")),
Expression.Constant(filter.Value, typeof(string)));
query = query.Where(Expression.Lambda<Func<Customer, bool>>(
body, param));
}
以上(每个“添加“元素)创建一个lambda,将给定成员过滤为提供的值(假定为字符串,但您当然可以执行任何转换等)。所有其他操作都可用,但是这显示了最小的效果。请注意,query
通过循环受到限制。
0
是。我不会告诉你如何解析XML,但你可以将LINQ的扩展方法是这样的:
var IQueryable<bla> query = myDataContext.BlahTable; // I think you can also use IEnumerable.
if(/* something */)
{
query = query.Where(b => b.Field1 > 0);
}
if(/* something else */)
{
query = query.OrderBy(b => b.Field2);
}
3
您可以使用Dynamic Linq。
0
本质上你需要建立一个表达式树。这里有一个简短的解释来回答关于creating expression trees from XML的另一个问题。
相关问题
- 1. 动态LINQ查询
- 2. 动态LINQ查询
- 3. LINQ动态查询
- 4. 动态LINQ查询
- 5. 动态LINQ查询
- 6. 动态LINQ查询EF C#
- 7. 动态Linq查询问题
- 8. 在SharePoint动态LINQ查询
- 9. LINQ动态查询库
- 10. 复杂动态LINQ查询
- 11. 创建动态LINQ查询
- 12. 动态创建linq查询
- 13. Linq动态查询与组
- 14. Linq 2 Sql动态查询
- 15. LINQ中的动态查询
- 16. 动态Linq查询帮助?
- 17. 多态LINQ查询
- 18. 针对Web API的动态LINQ查询
- 19. Sharepoint列表动态Linq查询
- 20. Linq To Entities的动态查询
- 21. 动态LINQ查询不与数值
- 22. linq动态查询未填充集合
- 23. Datatable上的动态Linq查询
- 24. 动态LINQ到NHibernate的查询问题
- 25. LinQ查询 - 动态添加地址
- 26. Linq查询动态,其中双
- 27. 动态LINQ查询的数据表
- 28. EF中的动态LINQ查询
- 29. linq-to-sql处理动态查询?
- 30. 什么是动态Linq查询
除了上面的问题,我还需要在运行时构建解析xml规则的Linq Queries,并且根据xml规则查询可能很复杂或简单。 – StevenzNPaul 2009-11-07 16:26:26