当我开始使用Entity Framework时,我使用了查询语法,因为我更习惯使用SQL而不是使用方法.现在我了解了如何使用Method,所以我将一些旧的LINQ Query转换为Method,因为我发现Method从编程角度来看更有意义.
我的问题是,为什么编译器要我在某些项目周围使用CBool(),而不是其他项目?它不是在C#中做到这一点,只有VB.
例;
这个
TotalYearWages = If((From t In DB.interview_earnings
Where t.IID = Input.ID AndAlso t.EarningsYear = Input.EarningsYear
Select t.Amount).Sum, 0)
Run Code Online (Sandbox Code Playgroud)
变成了这个
TotalYearWages = If(DB.interview_earnings.
Where(Function(t) t.IID = Input.ID AndAlso CBool(t.EarningsYear = Input.EarningsYear)).
Select(Function(t) t.Amount).Sum(), 0)
Run Code Online (Sandbox Code Playgroud)
但在c#中这很好用
TotalYearWages == DB.interview_earnings
.Where(t => t.IID == Input.ID && t.EarningsYear == Input.EarningsYear)
.Select(t => t.Amount).Sum() ?? 0
Run Code Online (Sandbox Code Playgroud)
我的问题;
为什么我必须围绕where子句的某些部分使用CBool,而不是围绕其他部分?是什么决定了需求?
编辑;
没有CBool的错误是;
Severity Code Description Project File Line Suppression State
Error BC30512 Option Strict On disallows implicit conversions from 'Boolean?' to 'Boolean'. …Run Code Online (Sandbox Code Playgroud)