3

F#クエリ構文を使用して、特定のフィールドがnullでないすべてのレコードを取得しようとしていますが、これを行う方法がわからないようです。

最初に、私はちょうど試みました:

query {
    for h in dc.Table do
    where (h.SectorId <> null)
    select h
}

しかし、エラーが述べられたので、提案されたようにをThe type 'Nullable<Guid>' does not have 'null' as a proper value. To create a null value for a Nullable type use 'System.Nullable()'.置き換えて、私は使用しました:nullNullable()

query {
    for h in dc.Table do
    where (h.SectorId <> Nullable())
    select h
}

LINQPadで上記のクエリを使用すると、値が存在することがわかっていても、値は取得されません。問題は、作成されたSQLにあるようです。

-- Region Parameters
DECLARE @p0 UniqueIdentifier = null
-- EndRegion
SELECT [t0].[Id], [t0].[Name], [t0].[SectorId], [t0].[Blah], [t0].[Meh], [t0].[DisplayOrder]
FROM [Table] AS [t0]
WHERE [t0].[SectorId] <> @p0

もちろんNULL <> NULL、SQLでは常にfalseになるため、これは機能しません。どこを読むべきかWHERE [t0].[SectorId] is not null。F#クエリでnullをチェックするにはどうすればよいですか?

4

1 に答える 1

6

試す

query {
    for h in dc.Table do
    where h.SectorId.HasValue
    select h
}
于 2013-01-29T15:21:19.663 に答える