我有一个数据表,一开始我知道它是空的,但是当我填充它时,我无法基于两个列条件从它中取出数据行,因此它使(或更多)行。
我可能正在解决这个错误,但是我的目的是检查如果满足两个条件,则该行是否存在于数据表中,如果存在,则获取该行并进行修改。
Dim qryB = From drw As DataRow In oDT_Signals.Rows
Where drw("SG").Equals(sgrp) AndAlso drw("EP").Equals(srchPt)
Select drw
Dim rslt = qryB.SingleOrDefault
If IsNothing(rslt) Then
ed.WriteMessage("Row does not exist")
oDT_Signals.Rows.Add(0, 0, sgrp, rw.sPt, PtList.IndexOf(rw.sPt), rw.ePt, PtList.IndexOf(rw.ePt), "NIL", rw.Len, 0, rw.Phases, rw.Size, rw.Core, rw.Ins, rw.Temp, rw.Table, "NIL",
"NA", "NA", rw.mVAm, ldVal, 0, 0, rw.Zs, 0, 0, rw.ePt.X, rw.ePt.Y, rw.mVtest, 0, 0, rw.Ztest, 0, 0)
Else
ed.WriteMessage("Row does exist")
Dim dr As DataRow = qryB.First
dr("LOAD") = Math.Round(ldVal + dr("LOAD"), 2, MidpointRounding.AwayFromZero)
End If
问题是rslt总是无关紧要,但我知道并非如此。有谁能帮助我确定我总是在增加行的地方做错了什么?控制台一直在说“行不存在”。
我尚未进行测试来确定,但我可以肯定的是问题在于您对Object.Equals
方法的使用,该方法将测试引用的相等性。如果您对价值平等感兴趣,请进行测试。更改此:
Where drw("SG").Equals(sgrp) AndAlso drw("EP").Equals(srchPt)
类似这样:
Where drw.Field(Of String)("SG") = sgrp AndAlso drw.Field(Of String)("EP") = srchPt
如果这些列不包含Strings
,请更改Field
调用的通用类型。