Solved

Vb.net Datatable -> if statement to check if the value exists then amend the table

Posted on 2014-02-05
3
2,001 Views
Last Modified: 2014-02-05
Hi ALL,

Below if the code i have so far and I have 2 questions really....

1) i have an error "BC30311: Value of type 'System.Collections.Generic.IEnumerable(Of System.Data.DataRow)' cannot be converted to 'Boolean'." on row If scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("Score").ToString() = thescorestext then


2) Can i do this with less code and make it quicker/neater?

I have commented the below code to show what i wanted it to do....

      
 	'Check to see if anyrows in HomeTeam contain a value
	 Dim count = scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("HomeTeam").ToString() = StringOutNumbers(div.selectSingleNode(".//td[@class='home']").InnerText)).Count()
'Find the count
if count = 0 then

'add row to the datatable as no results where found
scorestable.Rows.Add(StringOutNumbers(div.selectSingleNode(".//td[@class='home']").InnerText), div.selectSingleNode(".//td[@class='time']").InnerText.Trim().Substring(0, 2) , thescorestext)

else
'A matching result was found so now check to see if the Scores section of the result matches the value - thescorestext

If scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("Score").ToString() = thescorestext then
'Yes it does match the score so we just need to update the column of the row with the correct time
Dim scoresRow() As Data.DataRow
'Make sure i have selected the correct team
scoresRow = scorestable.Select("HomeTeam = StringOutNumbers(div.selectSingleNode(".//td[@class='home']").InnerText)")
'Update the time row'
scoresRow(0)("Time") = div.selectSingleNode(".//td[@class='time']").InnerText.Trim().Substring(0, 2)

else

'The score does not match meaning i need to update both the score and the time

Dim scoresRow() As Data.DataRow
'Make sure i have selected the correct team
scoresRow = scorestable.Select("HomeTeam = StringOutNumbers(div.selectSingleNode(".//td[@class='home']").InnerText)")
'update score
scoresRow(0)("Score") = thescorestext
'Update time
scoresRow(0)("Time") = div.selectSingleNode(".//td[@class='time']").InnerText.Trim().Substring(0, 2)
end if

end if

Open in new window

0
Comment
Question by:runnerjp2005
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 63

Accepted Solution

by:
Fernando Soto earned 500 total points
ID: 39835405
Hi runnerjp2005;

In the following If statement the test needs to return a Boolean type.

If scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("Score").ToString() = thescorestext then

Open in new window

The Test
scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("Score").ToString() = thescorestext

Open in new window

is missing a ")" at the end of the statement. But even if you put a ")" it returns a Collection of DataRows and NOT a Boolean. You need to change the statement so that it returns a Boolean something like the following.
scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("Score").ToString() = thescorestext).Count > 0

Open in new window

0
 

Author Comment

by:runnerjp2005
ID: 39835508
now i get  Identifier expected on scoresRow = scorestable.Select("HomeTeam = StringOutNumbers(div.selectSingleNode(".//td[@class='home']").InnerText)")
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 39835706
Try following


scorestable.Rows.Cast(Of DataRow)().Where(Function(n) n("Score").ToString())(0)("Score") = thescorestext

Another option is to use dataview

scorestable.DefaultView.RowFilter = "Score='" & thescorestext & "'"
if scorestable.DefaultView.Count > 0 Then
   'score found
else
   'not found
End If
0

Featured Post

Business Impact of IT Communications

What are the business impacts of how well businesses communicate during an IT incident? Targeting, speed, and transparency all matter. Find out more in this infographic.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
This video shows how to use Hyena, from SystemTools Software, to update 100 user accounts from an external text file. View in 1080p for best video quality.

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question