var result = database.Search<EntityType>(x=>x.name,"Entity name fIEld value");result = database.Search<EntityType>(x=>x.ID,"Entity ID fIEld value");result = database.Search<EntityType2>(x=>x.ID,"Entity2 ID fIEld value");result = database.Search<EntityTypeAny>(x=>x.FIEldAny,"EntityAny FIEldAny value");
我该如何实现这个方法?
解决方法 您可以使用Expression.Equal将选择器和值转换为谓词:static Iqueryable<TSource> Search<TSource,TValue>( this Iqueryable<TSource> source,Expression<Func<TSource,TValue>> selector,TValue value){ var predicate = Expression.Lambda<Func<TSource,bool>>( Expression.Equal( selector.Body,Expression.Constant(value,typeof(TValue)) ),selector.Parameters); return source.Where(predicate);}
然后你只需要做一些事情:
var result = database.someEntitIEs.Search(x => x.someProp,"value");
如果你想从数据库中做到这一点,那么这取决于数据库是什么;例如,使用liNQ-to-sql,您可以添加其他方法:
static Iqueryable<TSource> Search<TSource,TValue>( this System.Data.linq.DataContext database,TValue value) where TSource : class{ Iqueryable<TSource> source = database.Gettable<TSource>(); return Search(source,selector,value);}
并使用:
var result = database.Search<SomeEntity,string>(x => x.someProp,"value");
坦率地说,我认为使用database.someEntitIEs版本更清楚.
总结以上是内存溢出为你收集整理的如何使用表达式参数c#实现方法全部内容,希望文章能够帮你解决如何使用表达式参数c#实现方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)