【问题标题】:use external function in LINQ在 LINQ 中使用外部函数
【发布时间】:2011-03-30 20:55:27
【问题描述】:

是否可以在 linq select resault 中使用外部函数? 以及如何将参数传递给它?

sub x
Dim q = From a In contex Select New With {.z=z("MYNAME")}
end sub

function z(name as string)
return( name & "Something...")
end function

【问题讨论】:

  • 你的代码有什么问题?

标签: linq function


【解决方案1】:

这取决于所选的提供商。使用normal LINQ over IEnumerable 查询(又名LINQ to Objects)你可以做到。但是,对于大多数 LINQ over Expression 树(例如 LINQ to SQL、LINQ to Entities、NHibernate、LLBLGen 等),您不能。这些提供程序将表达式树转换为其他语言,例如 SQL、AD、SharePoint 等。他们只是不知道如何处理您的自定义方法。

您可以通过多种方式解决此问题。例如,尝试在查询中编写内联方法的代码。这样,提供者就知道如何处理它。另一种选择是让方法在表达式树之外调用。例如(对不起我的 C#):

var q = (from a in context select a).AsEnumerable();

// q is an IEnumerable and the z method will be called by .NET instead
// of being translated to SQL.
var q2 = (from a in q select new { z = z("MYNAME") };

【讨论】:

    【解决方案2】:

    这已在 StackOverflow 上得到回答和解释 here。请看一看。 您可以在here 找到有关您要执行的操作的完整说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多