小编Kay*_*yot的帖子

LINQ查询到LINQ方法; 为什么我需要CBool​​?

当我开始使用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)

linq vb.net lambda entity-framework-6

6
推荐指数
1
解决办法
94
查看次数

标签 统计

entity-framework-6 ×1

lambda ×1

linq ×1

vb.net ×1