【发布时间】:2016-09-10 08:54:01
【问题描述】:
我对这个问题摸不着头脑,很好奇为什么会发生这种情况。
下面的代码,第一个例子运行良好。然而,后两者没有。
这些在我的 LinqPad 中运行,并且表模式使得我使用的列是可空的(整数)但不是主键。我已经为将来的插入设置了该表的默认值 0,但不会影响历史项目。
我的项目代码现在确实有一行故意从该字段中排除空值,因此它可以工作,但是我担心这会在其他地方发生,并且希望将其捕获在数据层而不是让每个调用者都这样做。
编辑:Tasks 是 SQL Server 2008 db 中的一个表,具有以下架构:
CREATE TABLE [dbo].[Tasks](
[TaskID] [int] IDENTITY(1,1) NOT NULL,
[JobHeaderID] [int] NOT NULL,
[Sequence] [int] NOT NULL,
[CreateBy] [int] NOT NULL,
[CreateOn] [datetime2](7) NULL,
[EditOn] [datetime2](7) NULL,
[EditBy] [int] NULL,
[DeleteOn] [datetime2](7) NULL,
[DeleteBy] [int] NULL,
[VehicleSaleID] [int] NULL CONSTRAINT [DF_Tasks_VehicleSaleID] DEFAULT ((0))
)
感谢您的帮助!
Sub Main
Dim x = Tasks.Where(Function(s) s.VehicleSaleID = 142).FirstOrDefault
x.dump ' I work
Dim t2 = find(Function(i) i.VehicleSaleID = 142) 'I do not. Why?
t2.dump
Dim t = find(Function(i) i.VehicleSaleID = 142) 'I do not. Why?
t.dump
End Sub
Private Function Find(filter As Func(Of Tasks, Boolean)) As Tasks
Return Tasks.Where(filter).FirstOrDefault
End Function
Private Function Find2(filter As Func(Of Tasks, Boolean)) As Tasks
Dim _t = Tasks.tolist
Return _t.Where(filter).FirstOrDefault
End Function
【问题讨论】:
-
Tasks是什么? -
感谢您指出 Blorgbeard!
标签: sql .net vb.net linq-to-sql