加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用Func类型的Expression作为参数调用方法

发布时间:2020-12-15 23:38:02 所属栏目:百科 来源:网络整理
导读:我使用了在线教程中看到的Repository模式… 一切正常,除了find方法,我不知道如何使用它,我很难理解表达式或Func类型.之前我使用过linq和lambda,但是我很开心,仍然不能流利地使用它… public IEnumerableTEntity Find(ExpressionFuncTEntity,bool predicate){
我使用了在线教程中看到的Repository模式…

一切正常,除了find方法,我不知道如何使用它,我很难理解表达式或Func类型.之前我使用过linq和lambda,但是我很开心,仍然不能流利地使用它…

public IEnumerable<TEntity> Find(Expression<Func<TEntity,bool>> predicate)
{
    return Context.Set<TEntity>().Where(predicate);
}

我有这个模型类:

public partial class Artikl
{
        [Browsable(false)]
        public int IDArtikli { get; set; }
        public string Barkod { get; set; }
        [DisplayName("?ifra")]
        public Nullable<int> Sifra { get; set; }
        public string Naziv { get; set; }
        [DisplayName("JM")]
        public string JedinicaMjere { get; set; }
        public decimal Tarifa { get; set; }
        [DisplayName("Prodajna")]
        public Nullable<decimal> ProdajnaCijena { get; set; }
        [Browsable(false)]
        public Nullable<bool> Flag { get; set; }
        public Nullable<decimal> Kalo { get; set; }
        [DisplayName("Nabavna")]
        public Nullable<decimal> NabavnaCijena { get; set; }
        [DisplayName("Veleprodajna")]
        public Nullable<decimal> VeleprodajnaCijena { get; set; }
        public Nullable<decimal> Zalihe { get; set; }
 }

我的问题是如何根据属性“Sifra”获取Artikl项目.我不知道如何调用这种方法……

private void txtSifra_TextChanged(object sender,EventArgs e)
{
     var artikl = _UnitOfWork.Artikl.Find(???);
     txtNaziv.Text = artikl.Naziv;
}

解决方法

您需要传递 lambda expression才能满足Expression< Func< TEntity,bool>>谓语.您可以通过以下方式获取基于属性“Sifra”的项目:

var artikl = _UnitOfWork.Artikl.Find(q => q.Sifra == "some int value").FirstOrDefault();

希望能帮助到你!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读