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