如何使用表达式参数c#实现方法

如何使用表达式参数c#实现方法,第1张

概述我想创建一个这样的方法: 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<EntityType 我想创建一个这样的方法:
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#实现方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1251753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存