为了简化问题,我想我有一个带有两个布尔参数getParamA和getParamB的方法。
public JsonResult MyMethod(bool getParamA, bool getParamB)
有没有像三元运算符那样的方法或者说如果getParamA == true和getParamB == false,例如,我创建一个这样的匿名对象:
//this is an entityframework query
var result = entityContext.MyTable.Select(r=> new
{
paramA = r.paramA // because getParamA = true
// don't create paramB because getParamB is false
});
我知道使用两个参数(使用if else条件)很容易实现它,但如果我们有超过5个参数(因为你需要进行所有测试),事情会变得复杂......
答案 0 :(得分:1)
你可以,但它不是真正有效的代码。它使您的代码完全混乱:
.Select( r => getParamA && getParamB
? (object)new { A = r.A, B = r.B }
: (getParamA ? new { A = r.A }
: (getParamB ? new { B = r.B }
: null
)
)
);
更好的选择可能是ExpandoObject
,它在内部使用字典来存储其属性和值。
dynamic eo = new ExpandoObject();
if (getParamA)
{
eo.A = r.A;
}
if (getParamB)
{
eo.B = r.B;
}