gpt4 book ai didi

c# - 从 Expression> 转换为 Expression>

转载 作者:太空宇宙 更新时间:2023-11-03 16:33:34 24 4
gpt4 key购买 nike

我需要一些表达式转换方面的帮助。

我在一个类上有一个方法,如下所示:

protected IQueryOver<TEntity, TEntity> OrderQuery<TOrderBy>(
Expression<Func<TEntity, TOrderBy>> orderBy)
{
return session.QueryOver<TEntity>().OrderBy(orderBy).Asc;
}

这是对存储库类的通用查询。我想让事情保持通用,所以我指定了 TOrderBy 参数,这样属性的类型就无关紧要了。但是,此实现示例使用的是 NHibernate,我正在尝试执行以下操作:

var query = session.QueryOver<TEntity>().OrderBy(orderBy).Asc;

但是,OrderBy 方法采用 Expression> 的参数,因此我得到一个编译错误,因为不能保证 TOrderBy 是一个对象。

有没有办法进行这种转换,或者我应该坚持使用对象而不是 TOrderBy?如果我坚持使用对象,我不会失去按 ValueTypes(例如 DateTime)排序的能力吗?

感谢任何帮助/建议。

编辑:我应该提一下,我保留了这个通用的,因为我将为 nhibernate 和 Entity Framework 编写实现。这在 EF 中没有问题,因为它使用普通的 Linq OrderBy 方法。只是在 Nhibernate 实现中我遇到了这个问题

最佳答案

如果您将 LINQ 与 EF 一起使用,为什么不将 LINQ 与 NHibernate 一起使用而不是 QueryOver?

关于c# - 从 Expression<Func<TypeIn, TypeOut1>> 转换为 Expression<Func<TypeIn, TypeOut2>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9965357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com