我想使用下面的 if语句来计算我的产品的StockCode,但是我收到错误:
无法将类型'TruckWcf.Models.StockItem'隐式转换为'bool'
现在我是C#和EF6的新手,所以我尽力了解这里发生了什么:P。
var qisg = new QuoteItemSectionGroup
{
SectionGroup = db.SectionGroups.Where(x => x.Name == "Longitudinals" && x.Section == TruckSection.Floor).First(),
StockItem = db.StockItems.Where(x => x.StockCode == "SCH113").First() ? quoteItem.Chassis.Longitudinal : quoteItem.BodyType.Longitudinal, // <<-- Here lies my error
Quantity = 2,
Length = globals.FloorCalculatedLength
};
有人可以告诉我如何解决这个小而简单的问题。谢谢!
答案 0 :(得分:1)
As explained to you in your previous question on this topic,三元运算符采用以下形式:
<ion-content class="has-subheader" ng-controller="myCtrl">
<ion-list>
<ion-item ng-repeat='item in posts' class="item-thumbnail-left item-text-wrap">
<img src="http://placehold.it/100x100" alt="photo">
<h2>{{post.title}}</h2>
<h4>Place</h4>
<p style="font-size:12px; line-height:16px;">Quisque quis sem a velit placerat vehicula quis nec felis. Mauris posuere, nisl vitae condimentum luctus, tellus enim blandit orci, quis efficitur nibh libero eget dui. Aliquam fermentum velit quis sem molestie.</p>
</ion-item>
</ion-list>
</ion-content>
但你正在做:
<script type="text/javascript">
function pageLoad(sender, args) {
if (args.get_isPartialLoad()) {
$(function () {
initializer();
});
}
}
</script>
在这种情况下,var x = <some boolean expression> ? <value assigned to x if true> : <value if false>
不会返回布尔值。因此,您需要修复此表达式,可能是通过将其与其他值进行比较。
答案 1 :(得分:1)
如果我正确理解了这个问题,你需要这样的东西:
StockItem = db.StockItems.Any(x => x.StockCode == "SCH113")
? quoteItem.Chassis.Longitudinal
: quoteItem.BodyType.Longitudinal
答案 2 :(得分:0)
只需使用??
operator选择值即可。这基本上是说取??
之前的第一个值,但如果它为null,则返回之后的值。也可以使用FirstOrDefault
,否则您可能会获得异常而不是null
返回值。最后删除Where
,因为这样写的更简单(@YuvalItzchakov的好地方):
var qisg = new QuoteItemSectionGroup
{
SectionGroup = db.SectionGroups.Where(x => x.Name == "Longitudinals" && x.Section == TruckSection.Floor).First(),
StockItem =
db.StockItems.FirstOrDefault(x => x.StockCode == "SCH113") ??
quoteItem.Chassis.Longitudinal
Quantity = 2,
Length = globals.FloorCalculatedLength
};
答案 3 :(得分:0)
First()
将返回一个对象而不是一个布尔表达式,这就是你需要的。所以你必须做出这样的改变:
更改此行代码:
StockItem = db.StockItems.Where(x => x.StockCode == "SCH113").First() ? quoteItem.Chassis.Longitudinal : quoteItem.BodyType.Longitudinal
对此:
StockItem = db.StockItems.Where(x => x.StockCode == "SCH113").First() == null ? quoteItem.Chassis.Longitudinal : quoteItem.BodyType.Longitudinal
现在,这只是一个描述您必须在此处进行的类型更改的示例。我在这里使用了null
。您也可以使用First().SomeField == somevalue
或类似的东西。只要确保它是一个布尔条件,你就可以了。
希望这有帮助。