是否可以使用三元运算符来反映此逻辑?
if (a = 1)
{
somevalue = "hello";
}
else if (a = 2)
{
someValue = "world";
}
else if (a = 3)
{
someValue = "hellWorld";
}
我在LINQ查询中执行以下操作:
using (var data = new DAL())
{
var result = data.Holidays.AsNoTracking()
.Where(x => x.RequesterId == userId)
.Select(x => new HolidayModel
{
HolidayId = x.HolidayId,
FromDate = x.FromDate,
ToDate = x.ToDate,
AuthorisationStatus = x.InternalHolidayStatus == 1 ?
HolidayAuthStatus.Pending :
HolidayAuthStatus.Rejected,
DateModified = x.ModifiedDate
}).ToList();
return Json(result.ToDataSourceResult(request));
}
HolidayAuthStatus
是一个枚举,其中具有三个值(Pending
(1),Authorised
(2)和Rejected
(3));并且我希望在分配的值时在代码中反映出这一点AuthorisationStatus
。
换成这个
AuthorisationStatus = (HolidayAuthStatus)x.InternalHolidayStatus
如果您的HolidayAuthStatus的整数值与InternalHolidayStatus值匹配,则它将起作用。三元运算符在这里看起来很可怕。如果您的状态码不匹配,最好让函数接受int status
并返回HolidayAuthStatus
HolidayAuthStatus GetStatus(int status)
{
if(status == 1) return HolidayAuthStatus.Pending;
if(status == 2) return HolidayAuthStatus.Authorised;
if(status == 3) return HolidayAuthStatus.Rejected;
return HolidayAuthStatus.Unknown; // for e.g.
}
并像这样使用它:
AuthorisationStatus = GetStatus(x.InternalHolidayStatus)
编辑:
正如@James所说,该方法仅在Linq-to-object中有效,而在Linq-to-entity中无效
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句