zoukankan      html  css  js  c++  java
  • LINQ to Entities 不识别方法“Boolean Like(System.String, System.String)”,因此该方法无法转换为存储表达式。

    标题是我在编写asp.net mvc3时报错的错误提示, 如有遇到此错误, 请继续往下看..

     在使用C#进行网页开发时, 我们可以使用linq进行快速便捷的数据库操作, SQL查询中, 有提供like关键字进行模糊查询, 对应的 linq提供了相应的方法进行模糊查询——SqlMethods.Like(string, string);

    出现该错误的原因:

    • 使用了ADO.NET实体数据模型
    • 直接对对ADO.NET实体使用SqlMethods.Like(string, string);方法

    错误示例:

    string str = "%t%y%t%";
    Table_1[] t_1 = (from tab in Database_1.Table_1
                     where SqlMethods.Like(tab.Title, str)
                     orderby tab.Id descending
                     select tab).ToArray();

     错误说明:

      示例中的Database_1.Table_1是System.Data.Entity.DbSet<TEntity>类型, 出错实际原因是因为SqlMethods.Like(string, string);方法不能对System.Data.Entity.DbSet<TEntity>类型进行操作,上面的代码在使用的数据模型是Linq to SQL类型的时候便不会报错。

    解决方案:

      根据错误说明, 我们知道, 报错的原因在于类型不对, 所以我们只需要将Database_1.Table_1进行类型转换即可, 目标类型为IEnumerable<T>, 使用AsEnumerable<T>()方法即可。

    正确示例:

    string str = "%t%y%t%";
    Table_1[] t_1 = (from tab in Database_1.Table_1.AsEnumerable<Table_1>()
                     where SqlMethods.Like(tab.Title, str)
                     orderby tab.Id descending
                     select tab).ToArray();
  • 相关阅读:
    ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    152. Maximum Product Subarray
    151. Reverse Words in a String
    150. Evaluate Reverse Polish Notation
    149. Max Points on a Line
    148. Sort List
    147. Insertion Sort List
    146. LRU Cache
  • 原文地址:https://www.cnblogs.com/hourglasser/p/3307338.html
Copyright © 2011-2022 走看看