linq to entity 分页方法不支持LastOrDefault等操作的处理办法
2011-07-04 21:49
399 查看
最近一直使用entityframework,因为项目需要涉及到需要查询最后一条,我看着里面扩展了LastOrDefault这个方法,但是使用的时候一直报错
“LINQ to Entities 不识别方法“TravelWeb.Dao.XT_Card LastOrDefault[XT_Card](System.Linq.IQueryable`1[TravelWeb.Dao.XT_Card])”,因此该方法无法转换为存储表达式。”这样搞得我很郁闷,后来查了一下资料结果在MSDN上面查到了
发现这么多不支持的。我现在暂时用到lastordefault 处理办法就是用orderby 一个是顺序排列一个是倒序排列,不过切记where 条件要写在前面
示例
CardStartNum =edm.XT_Card.Where(c => c.CardRuleId == s.Id).OrderBy(c => c.CardNum).FirstOrDefault(),
CardEndNum = edm.XT_Card.Where(c => c.CardRuleId == s.Id).OrderByDescending(c => c.CardNum).FirstOrDefault()
搞定!
“LINQ to Entities 不识别方法“TravelWeb.Dao.XT_Card LastOrDefault[XT_Card](System.Linq.IQueryable`1[TravelWeb.Dao.XT_Card])”,因此该方法无法转换为存储表达式。”这样搞得我很郁闷,后来查了一下资料结果在MSDN上面查到了
支持和不支持的 LINQ 方法 (LINQ to Entities)
投影和限制方法
LINQ to Entities 查询中支持大多数 LINQ 投影和限制方法,除了那些接受位置参数的方法。 下表列出了支持的和不支持的投影和限制方法。分页方法
有些 LINQ 分页方法在 LINQ to Entities 查询中不受支持。 有关更多信息,请参见 LINQ to Entities 查询中的标准查询运算符。 下表列出了支持的和不支持的分页方法。方法 | 支持 | Visual Basic 函数签名 | C# 方法签名 |
---|---|---|---|
ElementAt | 不支持 | 复制Function ElementAt(Of TSource) ( _ source As IQueryable(Of TSource), _ index As Integer _ ) As TSource | 复制TSource ElementAt<TSource>( this IQueryable<TSource> source, int index ) |
ElementAtOrDefault | 不支持 | 复制Function ElementAtOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ index As Integer _ ) As TSource | 复制TSource ElementAtOrDefault<TSource>( this IQueryable<TSource> source, int index ) |
First | 支持 | 复制Function First(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource | 复制TSource First<TSource>( this IQueryable<TSource> source ) |
First | 支持 | 复制Function First(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource | 复制TSource First<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
FirstOrDefault | 支持 | 复制Function FirstOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource | 复制TSource FirstOrDefault<TSource>( this IQueryable<TSource> source ) |
FirstOrDefault | 支持 | 复制Function FirstOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource | 复制TSource FirstOrDefault<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
Last | 不支持 | 复制Function Last(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource | 复制TSource Last<TSource>( this IQueryable<TSource> source ) |
Last | 不支持 | 复制Function Last(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource | 复制TSource Last<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
LastOrDefault | 不支持 | 复制Function LastOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource | 复制TSource LastOrDefault<TSource>( this IQueryable<TSource> source ) |
LastOrDefault | 不支持 | 复制Function LastOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource | 复制TSource LastOrDefault<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
Single | 支持 | 复制Function Single(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource | 复制TSource Single<TSource>( this IQueryable<TSource> source ) |
Single | 支持 | 复制Function Single(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource | 复制TSource Single<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
SingleOrDefault | 支持 | 复制Function SingleOrDefault(Of TSource) ( _ source As IQueryable(Of TSource) _ ) As TSource | 复制TSource SingleOrDefault<TSource>( this IQueryable<TSource> source ) |
SingleOrDefault | 支持 | 复制Function SingleOrDefault(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As TSource | 复制TSource SingleOrDefault<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
Skip | 支持 | 复制Function Skip(Of TSource) ( _ source As IQueryable(Of TSource), _ count As Integer _ ) As IQueryable(Of TSource) | 复制IQueryable<TSource> Skip<TSource>( this IQueryable<TSource> source, int count ) |
SkipWhile | 不支持 | 复制Function SkipWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource) | 复制IQueryable<TSource> SkipWhile<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
SkipWhile | 不支持 | 复制Function SkipWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource) | 复制IQueryable<TSource> SkipWhile<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, int, bool>> predicate ) |
Take | 支持 | 复制Function Take(Of TSource) ( _ source As IQueryable(Of TSource), _ count As Integer _ ) As IQueryable(Of TSource) | 复制IQueryable<TSource> Take<TSource>( this IQueryable<TSource> source, int count ) |
TakeWhile | 不支持 | 复制Function TakeWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Boolean)) _ ) As IQueryable(Of TSource) | 复制IQueryable<TSource> TakeWhile<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) |
TakeWhile | 不支持 | 复制Function TakeWhile(Of TSource) ( _ source As IQueryable(Of TSource), _ predicate As Expression(Of Func(Of TSource, Integer, Boolean)) _ ) As IQueryable(Of TSource) |
发现这么多不支持的。我现在暂时用到lastordefault 处理办法就是用orderby 一个是顺序排列一个是倒序排列,不过切记where 条件要写在前面
示例
CardStartNum =edm.XT_Card.Where(c => c.CardRuleId == s.Id).OrderBy(c => c.CardNum).FirstOrDefault(),
CardEndNum = edm.XT_Card.Where(c => c.CardRuleId == s.Id).OrderByDescending(c => c.CardNum).FirstOrDefault()
搞定!
相关文章推荐
- Linq to Entity 求最大小值Max/Min返回null的处理方法
- EF映射——linq to Entity ,不支持方法 get_item(int 32) 无法转换为存储表达式
- win10下使用nltk的brown的词性tag包报错以及处理方法安装nltk相应包的操作办法
- Linq To Entity 的分页讨论
- linq to sql 分页 的几种方法
- asp.net MVC + linq to Entity简单教程(二)MVC的简单操作
- 关于IE7打开任何网页弹出[未处理的异常('对象不支持此属性或方法')发生在iexplorer.exe]错误调试框的解决办法
- asp.net MVC + linq to Entity简单教程(二)MVC的简单操作
- asp.net MVC + linq to Entity简单教程(三)linq to Entity的基本操作
- LINQ TO SQL 之Single“序列中不包含任何元素“的处理方法
- 如何使用 Linq to Entity 实现 in 操作
- LinqToEntities 更新、删除 的小技巧 Attach 和 域操作自定义方法
- “System.NotSupportedException”类型的异常在 System.Data.Entity.dll 中发生,但未在用户代码中进行处理 其他信息: 在 LINQ to Entitie
- asp.net Linq TO Sql 分页方法
- 步步为营VS 2008 + .NET 3.5(7) - LINQ查询操作符之First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Contains、Any、All、Count、LongCount、Sum、Min、Max、Average、Aggregate、Cast、DefaultIfEmpty、SequenceEqual、OfType、ToArray、ToList、ToDictionary
- Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)
- 学习并使用了两种linq to entity 的实现sql关键字in的查询方法
- Linq to entity 执行多个字段排序的方法
- linq to entity常用操作
- Linq To Sql模式中自动生成T-SQL增删改操作系列~PropertyChanged事件实现在子类中记录属性的变化,在基类中进行统一处理