Entity framework条件查询楼

Entity framework condidional query building

我在使用 entity framework 创建复杂查询时遇到问题。我想根据在构造此类查询期间给出的参数将其他数据提取到我的 linq 实体中。以下是其中的示例:

        if (featureEnabled)
        {
            query = query.Where(n => *condition*);
        }

我有这样创建的复杂对象:

n => new Entity{
    Property = n.Something
    \* ... *\
    PropertyN = n.SomethingN,
}

如果启用了功能,我想将额外的数据加载到实体中(就像在示例中一样):

public DoSomething(bool featureEnabled, feature2Enabled, etc.)
{
  return n => new Entity{
    Property = n.Something,
    \* ... *\
    PropertyN = n.SomethingN,
    Feature = (featureEnabled) ? *fetch some data from navigation property* : 0,
    Feature2 = (feature2Enabled) etc.
  }
}

在上面的示例中,参数 (featureNEnabled) 将被转换为 sql 参数。如何在查询构造时执行这样的操作?

您的意思是在 initializer 中使用 if 条件吗?

如果是这样,我将不可能。要使用 if 条件,您必须将其放在初始化程序

之外
var a = new MyClass{
prop1 = n.prop1,
prop2 = n.prop2,
prop3 = n.prop3,
};

a.propN = boolCondition ? n.PropN : 0;

我终于找到了问题的答案on this blog 使用此代码,您可以调用 expression.Merge(expression2),两个对象的初始化列表将合并到一个查询中。