0

是否可以在可移植类库中创建一个LINQ表达式并在应用程序的其他部分中重用该表达式?对我来说,一个便利的用例就是在平台上的CompiledQuerys中使用这些表达式,而不是多次复制/粘贴相同的代码。重用在可移植类库中创建的LINQ表达式

到目前为止,我所有的尝试都是抛出一些或多或少没有意义的运行时异常(NullReferenceException,Column not found ..)。我猜测PCL中的LINQ表达式的处理方式与例如WP应用程序中的不同?

public class SomeClassNotInPCL 
{ 
    private static readonly Func<Context, int, MyClass> CompiledQuery = 
     CompiledQuery.Compile(ClassFarAway.MethodInsidePCL()); 
} 

public class ClassFarAway 
{ 
    private static Expression<Func<IContext, int, MyClass>> MethodInsidePCL() 
    { 
     return (context, id) => context.MyClass.FirstOrDefault(m => m.Id == id); 
    } 
} 
+0

Expression in as Linq Expressions or Regular Expressions? – user7116 2012-08-08 21:29:08

+0

好点。我对System.Linq.Expressions.Expression感兴趣。 – UnclePaul 2012-08-08 21:35:25

+0

示例代码可以帮助很大。这是L2SQL吗? L2EF? L2O? – user7116 2012-08-08 21:37:00

回答

-1

这样的事情呢?

var commonExpressions = new Dictionary<CommonRegEx, Regex>(); 

public enum CommonRegEx{ 
    Phone, 
    Email, 
    SSN 
} 
+0

感谢您的反馈。我看你的例子绝对没有错,它可能会像魅力一样工作,但是,我期待在多个平台之间重用Linq表达式。 – UnclePaul 2012-08-08 21:39:48