Linq查询与方法调用
来源:互联网 发布:网络重口君 编辑:程序博客网 时间:2024/06/05 23:04
通常,使用linq查询时需要一个实现IQueryable<T> 的查询对象
public class DataA<T> : IQueryable<T> {....}
之后通过
var q =from
c in new
DataA<int
>() where
c > 0 select new
{ a = c.ToString() };
进行查询,使用IQueryProvider 收集用户输入的表达式进行处理。
但是查询本身实际上只关注查询对象上有无可用的 linqmethod(Select,Where.....).
如下,定义一个泛型对象
public class
Data<T> {
public
Data<TResult> Select< TResult>( Expression<Func<T, TResult>> selector) {
return new
Data<TResult>();
}
public
Data<T> Where ( Expression<Func<T,bool
>> f) {
return this;
}
}
只要保证Data上拥有与linq方法相同的实例方法,(Select,Where...),
我们依然可以使用相同的 linq 语法进行查询:var q =from
c in new
Data<int
>() where
c > 0 select new
{ a = c.ToString() };
结论: linq 查询语法与查询对象的类型无关,只会检查查询对象上有无名称、方法签名一致的方法(实例方法或扩展方法)。
IQueryable,IQueryProvider 在linq查询中不是必须的。
顺便说一下 ,个人认为, orm中最好不要使用IQueryable 这些,容易造成方法污染, 而且linq查询语法是固定的,无法扩展或限制。
Orm中最好直接使用 各种查询方法,更加灵活一些。
0 0
- Linq查询与方法调用
- Linq 查询 与方法调用
- c#--LINQ--查询语句与查询方法
- LINQ 查询语法与方法语法 (C#)
- (013):LINQ查询语法与方法语法
- .NET LINQ查询语法与方法语法
- LINQ(四)查询类型、查询语法与查询方法
- LINQ 查询方法
- EF下lambda与linq查询&&扩展方法
- 单表多条件查询,匿名类型,匿名对象,嵌套查询,Linq序列转换后调用外部方法
- 光脚丫学LINQ(013):LINQ查询语法与方法语法
- LinQ—高级查询方法
- Linq中调用本地方法
- linq+映射数据库调用方法
- LINQ与扩展方法
- Linq DataTable 查询与修改
- Linq排序、分组、模糊查询、调用外部方法、直接执行SQL语句、事务、修改数据
- LINQ类添加删除修改查询方法
- 在.net中常用的几种页面间传递参数的方法,并说出他们的优缺点。
- 单片机==流水灯(1)
- hdu 5873 Football Games
- 【数据库】E-R图向关系模型转换的规则
- javascript淘宝主图放大镜功能
- Linq查询与方法调用
- 从零开始写C# MVC框架之--- 用autofac ioc 容器实现依赖注入
- Java设计模式——单例模式(Singleton Pattern)
- 视频编解码学习之三:变换,量化与熵编码
- PHP 5.5 新特性
- Codeforces482B【线段树构造】
- 线程和进程主要是运用在技术存储
- 面试题一:实现两个线程交替打印数字
- 什么是XML?