Linq2Sql选择字符串为空或空的位置

时间:2015-04-28 10:15:19

标签: vb.net linq linq-to-sql isnullorempty

我正在尝试从表(带连接)中提取记录,其中文本字段PassFail不能= PASS不是空/空但我正在努力学习语法。到目前为止我遇到的错误指向我正在使用的语法不受linq支持..

我最近的尝试是

Dim HW2Process = (From mi In dc.tblMainDatas
                            Join u In dc.tblUsers On u.UserNo Equals mi.RecdBy
                            Join fi In dc.tblHWs On fi.HWRef Equals mi.HWRef
                            Where mi.Ref.StartsWith(tb_HWRefFind.Text.Trim()) And mi.DateProcessed.HasValue = True And ((mi.PassFail <> "PASS") And (IsNothing(mi.PassFail) = False))
                            Select New With {.ID = mi.ID,
                                                .DateReceived = mi.DateRecd,
                                                .ReceivedBy = u.FullName,
                                                .SerialID = mi.SerialID,
                                                .LiveTest = mi.LiveTest,
                                                .DeployYear = mi. DeployYear,
                                                .ProductType = mi.ProductType,
                                                .HWRef = mi.HWRef,
                                                .HWName = fi.HWName,
                                                .MediaType = mi.MediaType,
                                                .MediaQuantity = mi.MediaQty})

标准应该是mi.PassFail不应该为空或空或等于'PASS'

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

你写道:

mi.DateProcessed.HasValue = True

Linq2SQL没有正确的翻译。你应该这样写:

(Not (mi.DateProcessed Is Nothing))

我想这里有同样的事情:

(IsNothing(mi.PassFail) = False))

如果你想翻译我在这里看到的应该是:

(Not (mi.PassFail Is Nothing))

我不是真的在VB中,主要在C#但是我认为你得到这个错误因为如果你想检查一些null值,你应该像我一样做。