- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的 LINQ 查询的赋值部分,我需要检查该值是否为空,如果是,则分配一个默认值。返回的值类型是十进制,当我与 null 进行比较时,我收到警告
The result of the expression is always 'false' since a value of type 'decimal' is never equal to 'null' of type 'decimal?'
如果我尝试比较它以查看该值是否为 0,则会出现错误
The cast to value type 'System.Decimal' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
检查 HoursWorked2
是否为空并为其分配默认值的最佳方法是什么?
编辑: 我不认为所有的代码都需要,但因为其他人认为这里需要它是所有相关的代码:
// AJAX: /TimeOverviewGrid
[Route("TimeOverviewGrid", Name = "Time Overview Grid")]
public ActionResult TimeOverviewGrid()
{
var PayPeriod = TimeCardHelper.GetCurrentPayPeriod();
var WeekBeforePayPeriod = PayPeriod.AddDays(-7);
try
{
var EmployeeID = EmployeeHelper.GetEmployeeID(User.Identity.Name);
using (var db = new JobSightDbContext())
{
var TimeOverviewData = (from th1 in db.TimeCardHeaders
join e in db.Employees on th1.EmployeeID equals e.ID
join so1 in db.StatusOptions on th1.CurrentStatusID equals so1.ID
join leftth2 in db.TimeCardHeaders.Where(timeCardHeader => timeCardHeader.WeekEndingDate == PayPeriod)
on th1.EmployeeID equals leftth2.EmployeeID into leftjointh2
from th2 in leftjointh2.DefaultIfEmpty()
join so2 in db.StatusOptions on th2.CurrentStatusID equals so2.ID into leftjoinso2
from th2Final in leftjoinso2.DefaultIfEmpty()
where th1.WeekEndingDate == WeekBeforePayPeriod && (e.ID == EmployeeID || e.ManagerID == EmployeeID)
orderby e.FirstName
select new DashboardTimeOverviewVM()
{
EmployeeID = e.ID,
Employee = string.Concat(e.FirstName, " ", e.LastName),
WeekOfDate1 = th1.WeekEndingDate,
HoursWorked1 = th1.TotalHoursWorked,
Status1 = so1.Name,
WeekOfDate2 = (th2.WeekEndingDate == null) ? PayPeriod : th2.WeekEndingDate,
HoursWorked2 = (th2.TotalHoursWorked == null) ? 0 : th2.TotalHoursWorked,
Status2 = (string.IsNullOrEmpty(th2Final.Name)) ? "New" : th2Final.Name,
PTO = e.PTORemaining
}).ToList();
return Json(TimeOverviewData, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(new { responseText = "Error getting data, please try again later" }, JsonRequestBehavior.AllowGet);
}
}
public static DateTime GetCurrentPayPeriod()
{
var KnownPayPeriodDate = DateTime.Parse("2007-11-10");
while (KnownPayPeriodDate.CompareTo(DateTime.Today) < 0)
{
KnownPayPeriodDate = KnownPayPeriodDate.AddDays(14);
}
return ((KnownPayPeriodDate - DateTime.Today).Days < 7) ? KnownPayPeriodDate : KnownPayPeriodDate.AddDays(-14);
}
public static int GetEmployeeID(string adUserName)
{
adUserName = adUserName.Remove(0, 9);
using (var db = new JobSightDbContext())
{
return db.Employees.Where(employee => employee.ADUserName == adUserName).Select(employee => employee.ID).First();
}
}
public class DashboardTimeOverviewVM
{
public int EmployeeID { get; set; }
public string Employee { get; set; }
public DateTime WeekOfDate1 { get; set; }
public decimal HoursWorked1 { get; set; }
public string Status1 { get; set; }
public DateTime WeekOfDate2 { get; set; }
public decimal HoursWorked2 { get; set; }
public string Status2 { get; set; }
public decimal PTO { get; set; }
}
public class TimeCardHeader
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public int EmployeeID { get; set; }
public DateTime WeekEndingDate { get; set; }
public decimal TotalHoursWorked { get; set; }
public int CurrentStatusID { get; set; }
public decimal OtherPay { get; set; }
public int? ApprovedByID { get; set; }
public DateTime? DateSubmitted { get; set; }
public DateTime? DateApproved { get; set; }
[Column(TypeName = "varchar(MAX)")]
public string ManagerNotes { get; set; }
[ForeignKey("EmployeeID")]
public Employee Employee { get; set; }
[ForeignKey("ApprovedByID")]
public Employee ApprovedBy { get; set; }
[ForeignKey("CurrentStatusID")]
public StatusOption CurrentStatus { get; set; }
}
public class Employee
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string ADUserName { get; set; }
[Required]
public string Email { get; set; }
public int? ManagerID { get; set; }
[Required]
public string EmploymentType { get; set; }
[Required]
public string PhoneNumber { get; set; }
[Required]
public string OfficeLocation { get; set; }
public string MobilePhoneNumber { get; set; }
public decimal PTORemaining { get; set; }
public decimal PTOAccrualRate { get; set; }
public DateTime StartDate { get; set; }
public DateTime? EndDate { get; set; }
public int ADPFileNumber { get; set; }
public int AirCardLateCheckinCount { get; set; }
public int VehicleLateCheckinCount { get; set; }
public int WexCardDriverID { get; set; }
public int? UpdatedByEmployeeID { get; set; }
public DateTime? DateUpdated { get; set; }
[ForeignKey("ManagerID")]
public Employee Manager { get; set; }
[ForeignKey("UpdatedByEmployeeID")]
public Employee UpdatedBy { get; set; }
}
public class StatusOption
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
public string Name { get; set; }
}
最佳答案
由于您的 th2
变量来自 left outer join
并且相应的字段是不可空类型(如您的情况下的 decimal
) ,最简单(也是正确)的方法是对 th2
执行 null
检查:
HoursWorked2 = th2 == null ? 0 : th2.TotalHoursWorked
另一种仅适用于 LINQ to Entities(并将在 LINQ to Objects 中生成 NullReferenceException
)的方法是使用转换为可空类型:
HoursWorked2 = (decimal?)th2.TotalHoursWorked ?? 0
关于c# - 在 LINQ 查询中检查 NULL 的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39754985/
如何将整数类型转换为 double /浮点类型以显示小数点?例如,如果我想将数字转换为货币格式: 5 会变成 5.004.3 会变成 4.30 javascript 有什么东西可以用来做这种转换吗?
【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18107586 出自【进步*于辰的博客】
我意识到这是一个重复的问题,但是 this 中提到的解决方案这个问题完全不适合我。 我目前的代码如下 Sub ConvertTextToNumber() Dim Area As Range, C As
我正在使用数学 javascript,但在用它来替换点的逗号和逗号的点时遇到了一些麻烦。我可以改变千位分隔符的逗号,但无法设法将小数点变成逗号。我尝试了其他帖子中的一些建议,但没有感到高兴。目标是实现
我正在尝试在 Android 中创建一个数字选择器,但轮子只增加 1。我想增加 0.1。我在网上查了一下,但我发现了一个格式化的浮点数组禁用了轮子。请帮助并为语法感到抱歉,我正在学习。 最佳答案 您可
我正在尝试在多个网站上获取利率。数据相当非结构化,但形式足够接近。我想要捕捉的内容: x.xx% 至 xx.xx% 数据示例: 由 FDIC 成员 WebBank 发放的所有贷款。您的实际利率取决于信
在 MySQL 表中,我有一个具有不同值的 VARCHAR 列,这些值可能代表字符串、整数、浮点、任意值。这些值作为特定于语言的字符串写入数据库,这意味着 123.45 的浮点值可以写为德语中的 "1
我想编写一个正则表达式,它允许整数或具有 0 - 2 个小数位的小数。 有效输入 1 1. 1.1 1.11 111111111 111111111. 111111111.1 111111111.11
我正在尝试为 nullable 实现客户端验证其小数点分隔符可以是逗号(例如:123,45)。 在我看来: ... @Html.LabelFor(model => model.Turnove
我找不到合适的正则表达式来仅从字符串中提取 float 。考虑以下字符串: $string = "8x2.1 3x2"; 我想提取 2.1,我尝试了以下操作,但这给了我整数和 float : preg
我希望使用正则表达式函数分离以下数据,如下所示: 要使用的功能: let fx=(text,regex)=> Web.Page( " var x='
我是 jquery 新手。我有一个带有两个输入框的表单。我实现了一些验证。 Min.Amount Max.Amount
我正在java中实现一个简单的算法,它接受一个整数数组,并查找并返回数组中相邻整数的最大乘积。 为此,我首先初始化了一个名为largestProduct的变量,我用它来跟踪当前找到的最大(最佳)产品。
在 JavaScript 中,我想定义小数点的位置。我只能在示例中真正展示它。 假设输入值为 1234 。 我希望输出为 123.4 。 或者,如果输入是 12345 ,我希望输出是 123.45 。
我有这段代码,只允许在 keypress() 的输入字段中输入数字 if (e.which != 8 && e.which != 0 && (e.which 57)) { return fa
我目前正在开发一些基于 Django 的 Web 项目,在这个 Web 开发过程中,我遇到了以下我无法正确理解的代码。 if price_product['price'] == Decimal('-1
这个问题在这里已经有了答案: How do I print a double value with full precision using cout? (17 个答案) 关闭 7 年前。 我试图在
这应该是微不足道的,但我正在兜圈子,也许有人可以提供帮助。 我有两个表(T1,T2),我希望从中提取每行中的多个值并更新第三个表(T3)的内容当且仅当)T1 中有两个 UQ,NN 字段,T2 匹配,在
如果数字不是十进制,我需要附加.00,但是当我尝试下面的代码时,它会将整个数字更改为0.00。例如,如果数字是12,200,它会将其更改为0.00,而不是在末尾添加.00 $('.total-amou
我正在尝试在容器 View 中设置 9:16 纵横比 View 。以下代码在 viewDidLayoutSubviews 中设置约束,以便在正确的位置考虑自动布局。它还调用 layoutIfNeede
我是一名优秀的程序员,十分优秀!