if ((pp != "") && (pp != "0"))
            {
                source = source.Where(Expression.Lambda(Expression.Equal(Expression.Property(expression = Expression.Parameter(typeof(<>f__AnonymousType4<string, string, bool?, string, string, int, string, bool, decimal, string, DateTime, int, int, bool, bool, int, bool, int, int, string, string, string, int, int, string, string, string, string, string, string, string>), "c"), (MethodInfo) methodof(<>f__AnonymousType4<string, string, bool?, string, string, int, string, bool, decimal, string, DateTime, int, int, bool, bool, int, bool, int, int, string, string, string, int, int, string, string, string, string, string, string, string>.get_pinpai, <>f__AnonymousType4<string, string, bool?, string, string, int, string, bool, decimal, string, DateTime, int, int, bool, bool, int, bool, int, int, string, string, string, int, int, string, string, string, string, string, string, string>)), Expression.Constant(pp), false, (MethodInfo) methodof(string.op_Equality)), new ParameterExpression[] { expression }));
            }ParameterExpression expression;
            IQueryable<Check_NewPrice> source = this.db.Check_NewPrice.Select<Check_NewPrice, Check_NewPrice>(Expression.Lambda<Func<Check_NewPrice, Check_NewPrice>>(expression = Expression.Parameter(typeof(Check_NewPrice), "c"), new ParameterExpression[] { expression }));

解决方案 »

  1.   

    你前一段代码应该是IL里的,因为成员命名前出现了“<>”符号,这是为了命名的唯一性,而在公开的写法中时不允许的。
    后一段,可以讲每个方法在MSDN中查下,自然明了了。
      

  2.   

    这段代码使用了C# 2.0 3.0的各种语法,以及.NET 3的库。你需要系统地学习下,推荐你看C# in depth 2nd ed.。不妨把这段代码作为分辨早期C#程序员(C++/Java Like)和主流C#程序员的分水岭。