Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于Func<;电信,布尔>;谓语_C#_Linq To Sql - Fatal编程技术网

C# 关于Func<;电信,布尔>;谓语

C# 关于Func<;电信,布尔>;谓语,c#,linq-to-sql,C#,Linq To Sql,但我需要的是: FROM Table WHERE System.Func'2[DAL.User,System.Boolean]'; 有人能帮我吗?如果您想了解Linq to Sql如何构建Sql查询,您的第一步将是了解 下一步将是了解一些有助于您如何访问表达式树中的每个片段的知识 在这里,阅读博客系列,了解如何将表达式树解析为sql 这篇文章将帮助你分析你的谓词 现在,由于您将不使用IQueryable.Where(),而只使用Expression,因此这些文章中的所有内容都不是完全相关的,而

但我需要的是:

FROM Table WHERE System.Func'2[DAL.User,System.Boolean]';

有人能帮我吗?

如果您想了解Linq to Sql如何构建Sql查询,您的第一步将是了解

下一步将是了解一些有助于您如何访问表达式树中的每个片段的知识

在这里,阅读博客系列,了解如何将表达式树解析为sql

这篇文章将帮助你分析你的谓词

现在,由于您将不使用
IQueryable.Where()
,而只使用
Expression
,因此这些文章中的所有内容都不是完全相关的,而是如何将谓词表达式解析为有效的sql Where子句的良好开端


希望这能让你开始

在这里,您似乎试图使查询类LINQ可访问。当您参与LINQ Where子句时,得到的谓词是函数对象,而不是字符串。其思想是将谓词函数应用于枚举的每个元素,并只返回函数返回“true”的元素

LINQ to SQL查看这样一个谓词中的代码,它假定该谓词是一个表达式(例如lambda),可以分析并转换为SQL表达式。请记住,编译器可以将C#lambda生成为委托树或表达式树(请参阅),具体取决于它所在的表达式中预期的类型。所以LINQtoSQL做了大量的工作,换句话说,将谓词转换为可以在数据库引擎上运行的东西

如果您真的要使用LINQ,您可能需要获取查询中的所有记录,然后使用谓词对它们进行过滤,除非这代表了一个扩展问题(取决于应用程序的严重程度)。此外,还必须编写一个适当的Where函数,该函数返回IEnumerable对象并使用yield返回。请参阅(您必须向下滚动一段时间)或简单地阅读优秀C#中的LINQ章节


另一方面,如果您实际上并不关心LINQ,而这段代码恰好是LINQ-y,那么只需将参数类型更改为string,并在您想要使用的表达式周围加上引号。

您能解释一下这部分的含义吗
u=>u.ID==user.ID
。你只想在匹配的情况下给出ID,否则你想要什么?首先,它必须是
Expression
类型如果你想解析谓词,我的下一个问题是你的目标是什么?如果您使用的是Linq To Sql,如问号所述,那么您为什么要重新发明
Where
?我想知道Linq dofacepalm是如何实现的。中国博士,我想你在学猎兔子之前是在猎狮子。实现LINQ2[X]包需要许多构建块。也许你可以先了解使用了哪些块,以及它们是如何工作的。你的参考比我的要好得多。提问者,请改为跟随这些链接!你认为Edulinq的链接在这里有用吗?它描述了LINQ2对象,但仍将对Linq的一般实现方式进行概述。我不想写一个新的问题来补充这个问题,但是如果你认为它有用的话,请随意将它编辑到你的答案中。欢呼
FROM Table WHERE System.Func'2[DAL.User,System.Boolean]';
FROM Table WHERE ID=1;