Когда я начал использовать Entity Framework, я использовал синтаксис запроса, поскольку я больше привык к использованию SQL, чем к Method.Теперь я понимаю, как использовать метод, поэтому я конвертирую некоторые из моих старых запросов LINQ в метод, так как я обнаружил, что метод имеет больше смысла с точки зрения программирования.
Мой вопрос: почему компилятор хочет, чтобы яиспользовать CBool () для некоторых предметов, но не для других?Это не делает это в C #, только VB.
Пример;
This
TotalYearWages = If((From t In DB.interview_earnings
Where t.IID = Input.ID AndAlso t.EarningsYear = Input.EarningsYear
Select t.Amount).Sum, 0)
Становится таким
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)
Но в c #это прекрасно работает
TotalYearWages == DB.interview_earnings
.Where(t => t.IID == Input.ID && t.EarningsYear == Input.EarningsYear)
.Select(t => t.Amount).Sum() ?? 0
Мой вопрос;
Почему я должен использовать CBool вокруг некоторых частей предложения where, но не вокруг других?От чего зависит необходимость?
Редактировать;
Ошибка, которую я получаю без CBool:
Severity Code Description Project File Line Suppression State
Error BC30512 Option Strict On disallows implicit conversions from 'Boolean?' to 'Boolean'. WOTC-FE d:\Programming\WOTC-Projects\WOTC-FE\Class\Billing.vb 129 Active
Конструкторы классов:
Imports System
Imports System.Collections.Generic
Partial Public Class interview_earnings
Public Property ID As Integer
Public Property IID As Integer
Public Property CLIENTCODE As String
Public Property ClientLocation As String
Public Property EarningsDate As Nullable(Of Date)
Public Property UserName As String
Public Property Amount As Nullable(Of Decimal)
Public Property Hours As Nullable(Of Decimal)
Public Property InvDate As Nullable(Of Date)
Public Property InvNumber As Nullable(Of Short)
Public Property Notes As String
Public Property EarningsYear As Nullable(Of Short)
Public Property TCPercent As Nullable(Of Byte)
Public Property WTWBill As Nullable(Of Boolean)
Public Property WTW2yrBill As Nullable(Of Boolean)
Public Property Refund As Nullable(Of Boolean)
Public Overridable Property interview_main As interview_main
End Class
И
Ввод
Public Class WageInfo
Public Property ID As Integer
Public Property NewYTDWage As Decimal?
Public Property Limit As Integer?
Public Property WOTC As Boolean
Public Property EarningsRemaining As Decimal?
Public Property EarningsYear As Short
Public Property ThirdYearCalculation As Boolean
Public Property WTW2Base As Decimal?
Public Property WageWTW2Yr As Decimal?
Public Property WageWOTC As Decimal?
Public Property StartDate As Date?
Public Property EarningsDate As Date
End Class