我已经很久没有深入研究表达式树了,我正在为以下问题而苦苦挣扎。
基本上,我想要使用以下
关于这个问题的背景,这都是因为我试图解决EF Core 2.0中的一个问题,如下所述: https://github.com/aspnet/EntityFrameworkCore/issues/11456 以下详细说明了我正在尝试的内容:
基本上,我想要使用以下
Expression<Func<T, TIdType>>
:
(a) => EF.Property<TIdType>(a, "TenantId")
并将其扩展为以下Expression<Func<T, bool>
:
(a) => EF.Property<TIdType>(a, "TenantId").Equals(TenantId)
所以基本上我想要取得原始表达式并添加.Equals(TenantId)
。关于这个问题的背景,这都是因为我试图解决EF Core 2.0中的一个问题,如下所述: https://github.com/aspnet/EntityFrameworkCore/issues/11456 以下详细说明了我正在尝试的内容:
public class FooEntity
{
public Guid TenantId { get; set; }
}
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var adaptor = new TenantFilterExpressionAdaptor<FooEntity, Guid>();
var tenantIdFilter = adaptor.Adapt((a) => EF.Property<Guid>(a, "TenantId"));
}
}
public class TenantFilterExpressionAdaptor<T, TIdType>
{
public TIdType TenantId { get; set; }
public Expression<Func<T, bool>> Adapt(Expression<Func<T, TIdType>> idExpression)
{
// Tack on .Equals(TenantId) to the expression!?
// assume I have to add nodes to the body?
// idExpression.Body?
}
}
Expression.Constant(TenantId)
对我来说有问题,因为 TenantId 的值需要在运行时提供(因为它会改变)。我需要将其转换为参数吗?有没有可能扩展您的答案以解决这个问题,以获得额外的赞? :-) - Darrell