所以,这是进入细节,但我希望这里有人可能有洞察力.
这是我设法收集的内容(当然,我可能错了任何一个,所以请纠正我)
Expression.Bind
基于我的研究,包括[topic] [1]上的MSDN Entry,似乎Expression.Bind方法用于生成MemberAssignment类型的表达式,MemberAssignment是MemberBinding表达式的特定子类型.该方法采用MemberInfo和它应该绑定的表达式.生成的MemberAssignment表达式表示成员的初始化.
Expression.Assign
是一种创建表示赋值操作的BinaryExpression的方法
这是我的问题:为什么我们只能在提供Expression.MemberInit方法的绑定时使用Expression.Assign?代替:
MemberAssignment binding = Expression.Bind(PropAccessMethodInfo, TargetExpression)
Run Code Online (Sandbox Code Playgroud)
例如,我们可以执行以下操作:
MemberExpression getProperty = Expression.Property(FindObjectExpression, PropAccessMethodInfo)
Expression binding = Expression.Assign(getProperty, TargetExpression)
Run Code Online (Sandbox Code Playgroud)
我知道编译器会抱怨,但我想我在问这里是否还有一个语法问题.换句话说,Expression.Bind/MemberBindings会给我们一些额外的东西吗?或者,它们只是语法糖,使管理成员初始化更容易吗?
更具体地说,它是否可以帮助跟踪业务对象与.NET EF4中的底层实体之间的关系?它是否适合实体框架中的"使用代理"或帮助进行更改跟踪或业务对象与基于EF的数据访问层之间的桥梁?
正如您可能预见的那样,我正在尝试以编程方式从底层组件Entities连接我的业务对象的创建,这样的表达式(尤其是MemberInit方法)可以帮助确定创建位.
但是,我不确定EF/.NET是否足够聪明,可以使用这些绑定进行跟踪?或者,我是否可以将这些相同的绑定重用于Biz < - > Ent tracking/bridge.
我希望这是有道理的.如果有什么不清楚的地方,我很乐意提供更多信息.
谢谢!!
我正在使用 Stargazer 输出包含多个 lm 模型的回归表。问题是 Stargazer 默认在一行中输出 F 统计量和自由度。如果您有 3 或 4 个模型,则意味着 Latex 中的输出不必要地宽并且延伸到页面之外。
有一个选项可以使用以下方法隐藏自由度:
stargazer(lm1,lm2,lm3,lm4, df = F)
Run Code Online (Sandbox Code Playgroud)
但是,没有办法让它显示在两行上。
这是一个可重现的不良结果示例:
lm.out.1 <- lm(stack.loss ~ Air.Flow , data=stackloss)
lm.out.2 <- lm(stack.loss ~ Water.Temp, data=stackloss)
lm.out.3 <- lm(stack.loss ~ Acid.Conc., data=stackloss)
lm.out.4 <- lm(stack.loss ~ Air.Flow + Water.Temp, data=stackloss)
lm.out.5 <- lm(stack.loss ~ Air.Flow + Water.Temp + Acid.Conc., data=stackloss)
stargazer(lm.out.1,
lm.out.2,
lm.out.3,
lm.out.4,
lm.out.5)
Run Code Online (Sandbox Code Playgroud)
可以看到如何使用df=F选项以可打印的方式整齐有效地呈现该表:
stargazer(lm.out.1,
lm.out.2,
lm.out.3,
lm.out.4,
lm.out.5, df = F)
Run Code Online (Sandbox Code Playgroud)
但是,现在我们失去了有关自由度的信息。
有没有办法打印带有换行符的信息,以便它打印在表格的两行上? …