0

私はそのようなクエリを持っています:

 Dim clcexists = (From p In dbContext.Signatures _
                          Where p.StudentID = people_id _
                         And p.ContractType = "clc" _
                          Order By p.ID Descending _
                           Select p)

後で、IsNothingを使用して、clcexistsに行が存在するかどうかを確認します。

   If IsNothing(clcexists) Then ' If no CLC is on file.
            clcfirst = Date.Now.Subtract(year)
            clcdate = clcfirst
        Else ' If CLC is on file.
            clcfirst = clcexists.FirstOrDefault()
            clcdate = clcfirst.SignatureDate
        End If

しかし、IsNothing()は私が期待するように機能していません。結果テーブルには行がありませんが、それでも存在するかのように動作し、Else句に移動します。ヘルプ?

4

3 に答える 3

3

Any代わりに使用することをお勧めします。

If Not clcexists.Any() Then ' no CLC is on file.
    clcfirst = Date.Now.Subtract(year)
    clcdate = clcfirst
Else ' If CLC is on file.
    clcfirst = clcexists.FirstOrDefault()
    clcdate = clcfirst.SignatureDate
End If
于 2012-04-12T13:18:31.940 に答える
2

IsNothing参照にオブジェクトインスタンスが割り当てられているかどうかを確認します(つまり、そうではありませんnull)。あなたの場合、オブジェクトはnull行のないインスタンスを指しているため、ではありません。

http://msdn.microsoft.com/en-us/library/5adx7fxz(v=vs.71).aspx

Rows.CountRows.Any()またはHasRowsプロパティを使用して、インスタンスに行が存在するかどうかを確認する必要があります。

于 2012-04-12T13:26:11.417 に答える
1

HasRowsプロパティを使用します。

http://msdn.microsoft.com/en-us/library/system.data.datatablereader.hasrows.aspx

于 2012-04-12T13:16:39.553 に答える