Создайте LambdaExpression, который содержит внешнюю переменную

Я хочу создать лямбду что-то вроде этого

user => user.Address == address

но не скомпилирован, хочу вернутьLambdaExpression

Если лямбда принять постоянную, как это

user => user.Age == 50

Тогда я могу использовать этот метод

    public static LambdaExpression PropertyEqual(Type tEntityType, string propertyName, object value)
    {
        // entity => entity.PropName == const
        var itemParameter = Expression.Parameter(tEntityType, "entity");
        return Expression.Lambda
        (
            Expression.Equal
            (
                Expression.Property
                (
                    itemParameter,
                    propertyName
                ),
                Expression.Constant(value) // Tried to replace this with Expression.Parameter or Expression.Variable but no luck
            ),
            new[] { itemParameter }
        );
    }

Как заставить этот метод принимать переменныеaddress исходить из области только снаружи от лямбда-выражения?

var addressPropertyName = "Address";
var address = new Address() {...};
var q = Repo.GetQuery().Where(PropertyEqual(typeof(User), addressPropertyName, address))

Изменить: уточнить мой вопрос: Как правильно построитьExpression сгенерировать первую лямбду?

Обновление: это невозможно, потому чтоEF не поддерживает нескалярную переменную

Я меняю лямбду наuser => user.AddressId == addressId как предложеноВот, Это просто вопрос, как получитьAddressId FKPropertyInfo из известного свойства навигации.Address

Ответы на вопрос(1)

Ваш ответ на вопрос