通过谓词/ lambda通过vb.net linq加载记录

时间:2011-01-12 11:45:14

标签: vb.net linq

我对lambdas非常困惑,实际上我甚至不确定我是否需要它们

我在这里尝试做的是编写一个函数,它将从某个具有特定条件的表中返回一个对象

所以我可以说我可以写

function GetRecord(TableName as string,Criteria as string) as object
'do the linq-stuff
end function

现在我不在乎,如果参数是字符串或lambdas或其他什么,但最终结果必须是在运行时我不知道将使用哪个表和哪个标准

有时候我需要通过电子邮件获取客户记录,有时候还需要通过id等产品。

如果可能的话我宁愿返回匹配对象的列表然后我会在我想要1时使用.firstordefault(例如通过id ...)

一如既往地感谢您花时间阅读并回答!

一切顺利

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用Dynamic LINQ

实施例

Dynamic LINQ

答案 1 :(得分:1)

解析表达式树可能是解决此问题的一种具有挑战性但有益的方法。我认为这太过分了,我会选择动态Linq作为decyclone提到的。

解析表达式树的一个好处是,您可以对提交的条件进行编译时检查。

以下是一些帮助我的文章。

如何:实现表达式树访问者:http://msdn.microsoft.com/en-us/library/bb882521(VS.90).aspx

构建自定义IQueryable提供程序:http://blogs.msdn.com/b/mattwar/archive/2008/11/18/linq-links.aspx

演练:创建IQueryable LINQ提供程序:http://msdn.microsoft.com/en-us/library/bb546158(v=VS.90).aspx

表达式树基础知识: http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx