提交更改后循环 - 只保存最后一个记录
问题描述:
下面的代码工作,但它只保存循环中的最后一条记录,我找不到原因。我认为Submitchanges()
是在正确的地方,在循环结束。有人可以告诉我什么是错的?谢谢。提交更改后循环 - 只保存最后一个记录
Sub POPULATE_CHAIN()
Dim newChain As New CHAIN
Dim dpSTRIKE As Integer
'get list of Options Contracts
Dim lstOPT = From Z In DATA.OPTIONs, X In DATA.UDLies
Where X.UDLY_SYM = Z.UDLY_SYM
Select Z.CONTRACT, Z.STRIKE_GAP, X.UDLY_LAST
Dim dctOPT = lstOPT.ToDictionary(Function(Z) Z.CONTRACT)
For Each key In dctOPT.Keys
For COUNT = 1 To 5
dpSTRIKE = 1850 + 5 * COUNT
Dim lkup = From Z In DATA.CHAINs
Select Z
Dim RCD_EXISTS As Boolean = lkup.Any(Function(Z) Z.CONTRACT = dctOPT(key).CONTRACT And Z.P_C = "C" And Z.STRIKE = dpSTRIKE)
If RCD_EXISTS = False Then
newChain.CONTRACT = dctOPT(key).CONTRACT
newChain.P_C = "C"
newChain.STRIKE = dpSTRIKE
DATA.CHAINs.InsertOnSubmit(newChain)
Else
newChain.CONTRACT = dctOPT(key).CONTRACT
newChain.P_C = "C"
newChain.STRIKE = dpSTRIKE
End If
Next
Next
DATA.SubmitChanges()
End Sub
如果存在匹配,您是不是应将newChain指向现有记录。目前,您的代码使用Any来确定是否存在匹配项,但对匹配记录没有做任何处理。 – sgmoore
Tks,但我认为''else'..end if''部分处理匹配记录的''else''部分。我误解了linq更新方法吗?我知道数据库是空的,所以问题是添加5个新记录,而不是更新现有的记录。 – Zeus