我在下面的代码中使用if
语句。
var qisg = new QuoteItemSectionGroup
{
SectionGroup = db.SectionGroups.Where(x => x.Name == "Longitudinals" && x.Section == TruckSection.FloorSpecification).First(),
//If statement below.
StockItem = quoteItem.BodyType.Name == "Insulated" ? db.StockItems.Where(x => x.StockCode == "SCH095").First() : db.StockItems.Where(x => x.StockCode == "SCH100").First(),
};
我想知道如何在我声明if
的行内创建多个StockItem
语句。或者,如果有更好的方法在不使用if
语句的情况下执行此操作,请告诉我:)
谢谢!
答案 0 :(得分:2)
我认为更好的方法是
string Condition(string cond)
{
switch(cond)
{
case "Insulated":
return "SCH095";
...
}
}
StockItem = db.StockItems.Where(x => x.StockCode == Condition(quoteItem.BodyType.Name)).First();
答案 1 :(得分:1)
喜欢那个
var elements=$(".js-block-height");
elements.each(function(){
$(this).css("height",$(this).data("height"));
});
等等。 但我不认为这是好风格。其他人和你在几个月内的可读性不会增加;)
答案 2 :(得分:1)
可以链接?:这样的调用
predicateA ? expressionA : predicateB ? expressionB : expressionC
这相当于
if (predicateA)
{
expressionA
}
else if (predicateB)
{
expressionB
}
else expressionC
但我会建议你稍微重构一下你的代码。这样的事可能吗?
var stockCode = quoteItem.BodyType.Name == "Insulated" ? "SCH095" : "SCH100";
...
StockItem = db.StockItems.Where(x => x.StockCode == stockCode).First();
然后从那里开始。
答案 3 :(得分:1)
您正在使用Ternary Operator
。并且是您可以添加任意数量的条件,但这将是一个糟糕的编程实践。对多个条件使用if
语句。
Explanation of Ternary Operators
Explanation of if statments
演示1 (使用三元运算符):
StockItem = quoteItem.BodyType.Name == "Insulated" ?
db.StockItems.Where(x => x.StockCode == "SCH095").First() :
( quoteItem.BodyType.Name == "Promoted"?
db.StockItems.Where(x => x.StockCode == "SCH100").First():
db.StockItems.Where(x => x.StockCode == "SCH148").First());
演示2 (使用If语句):
StockItem stockItem=null;
if(quoteItem.BodyType.Name == "Insulated")
{
stockItem = b.StockItems.Where(x => x.StockCode == "SCH095").First();
}
else if(quoteItem.BodyType.Name == "Promoted")
{
stockItem = b.StockItems.Where(x => x.StockCode == "SCH100").First();
}
else
{
stockItem = b.StockItems.Where(x => x.StockCode == "SCH148").First();
}
答案 4 :(得分:0)
它被称为三元运算符。只要在每个分支中保持? :
语法一致,您就可以在额外的代码路径中定义其他条件。现在,我不推荐这个,因为它听起来像switch
块的情况,但你去了。
答案 5 :(得分:0)
如果您真的想将它保留在我不建议阅读的行中,您可以使用嵌套的条件运算符。
请参阅链接以了解嵌套条件运算符的使用。
http://twistedoakstudios.com/blog/Post5273_how-to-read-nested-ternary-operators
答案 6 :(得分:0)
如果您想检查多个条件,而不是:
StockItem = quoteItem.BodyType.Name == "Insulated" ?
db.StockItems.Where(x => x.StockCode == "SCH095").First()
: db.StockItems.Where(x => x.StockCode == "SCH100").First()
像这样使用:
StockItem = quoteItem.BodyType.Name == "Insulated" ?
db.StockItems.Where(x => x.StockCode == "SCH095").First()
: ( quoteItem.BodyType.Name == "unInsulated" ) ?
db.StockItems.Where(x => x.StockCode == "SCH995").First()
: db.StockItems.Where(x => x.StockCode == "SCH110").First()
您可以连接任意数量的条件,但这不是一个好主意,因为代码的可读性会受到影响。