none
关于Linq to Entity实现机制 RRS feed

  • 问题

  • 在实际应用中我们在会写出这样的Lambda表达式

    x=>x.Id==a[0](a是一个数组)

    这样的表达式在查询时如果使用EF即LINQ TO ENTITY的话会跑出异常,说不支持运算(EF作为ORM框架使用,context对象也是EF的)

    但是在LINQ TO SQL中就不会出错(LINQ作为ORM框架 context对象是LINQ的),不明白这是怎么回事,请各位指教

    2011年3月2日 3:55

答案

  • 你好!

    我刚才重现了一下这个场景,确实会提示异常,但是换一种方法可以得到正常的结果,请看下面代码:

    string[] course = new string[] { "Development", "tEst" };

                    var q = (from c in Context.Course
                             from s in course
                             where s == c.Title

                             select c.Title).ToArray();

    如果把lambda表达式换成上述代码,会得到正确的结果, 所以,如果在开发中遇到此类需求,转换一下就可以正常工作了。

    希望可以帮到你,

    谢谢!


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月8日 5:25
    版主

全部回复

  • ef是可以支持的,发详细
    2011年3月2日 9:35
  • 就是这样的啊?我试过了不行

    比如 TestEntities context=new TestEntities();

    string[] arry=new string[]{"1001","1002"}

    var list=context.Customer.Where(x=>x.Id==arry[0]).ToList();

    当代码运行到这一步的时候就会抛出异常

    说LINQ TO Entity不支持这样的运算,但是如果写成下面的形式就可以

    var list=context.Customer.Where(x=>x.Id==“1001”).ToList();

     

    这个很费解,期待答案。

     

    2011年3月4日 5:46
  • 你好!

    我刚才重现了一下这个场景,确实会提示异常,但是换一种方法可以得到正常的结果,请看下面代码:

    string[] course = new string[] { "Development", "tEst" };

                    var q = (from c in Context.Course
                             from s in course
                             where s == c.Title

                             select c.Title).ToArray();

    如果把lambda表达式换成上述代码,会得到正确的结果, 所以,如果在开发中遇到此类需求,转换一下就可以正常工作了。

    希望可以帮到你,

    谢谢!


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月8日 5:25
    版主