Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# VisitMethodCall不访问每个部分_C#_Linq_Iqueryable - Fatal编程技术网

C# VisitMethodCall不访问每个部分

C# VisitMethodCall不访问每个部分,c#,linq,iqueryable,C#,Linq,Iqueryable,我有一个表达式访问者将表达式转换为url格式。但它只转换最后调用的表达式。例如,如果我这样调用我的集合: NetworkAccountStorage.Where<NetworkAccountModel>(x => x.ID + 1 > 0).Select(x => x.Name).Distinct() 你需要递归。Distinct接受一个参数,该参数是.Select call等。您需要递归。Distinct接受一个这个参数,它是.Select call等。您需要通

我有一个表达式访问者将表达式转换为url格式。但它只转换最后调用的表达式。例如,如果我这样调用我的集合:

NetworkAccountStorage.Where<NetworkAccountModel>(x => x.ID + 1 > 0).Select(x => x.Name).Distinct()

你需要递归。Distinct接受一个
参数,该参数是.Select call等。

您需要递归。Distinct接受一个
这个
参数,它是.Select call等。

您需要通过调用覆盖的基本方法来递归:

base.VisitMethodCall(...);

您需要通过调用覆盖的基方法进行递归:

base.VisitMethodCall(...);

但是什么属性必须递归呢?绑定到Distinct的第一个参数的表达式。可悲的是,我没有任何榜样,也没有时间让别人发现它。我刚刚访问了Arguments[0]@Marcklein我建议您不要手动访问所有内容。看看我的答案。这对你来说是自动化的。但是什么属性必须递归呢?绑定到Distinct的第一个参数的表达式。可悲的是,我没有任何榜样,也没有时间让别人发现它。我刚刚访问了Arguments[0]@Marcklein我建议您不要手动访问所有内容。看看我的答案。这东西是自动为你准备的,你认为这是正确的吗?m=m.Update(m.Object,m.Arguments);返回基。访问方法调用(m);修改m没有效果-它是一个局部变量(一个参数)。这是你的私人副本。试试这个(如果它不能立即工作,您需要以某种方式修复它):
返回m.Update(base.Visit(m.Object),m.Arguments.Select(x=>base.Visit(x))。不确定您称之为更新的原因,但它一定有原因。所以您认为这是正确的吗?m=m.Update(m.Object,m.Arguments);返回基。访问方法调用(m);修改m没有效果-它是一个局部变量(一个参数)。这是你的私人副本。试试这个(如果它不能立即工作,您需要以某种方式修复它):
返回m.Update(base.Visit(m.Object),m.Arguments.Select(x=>base.Visit(x))。不确定您称之为更新的原因,但必须有原因。