Asp.net - Converting The Rows Of A Returned DataTable Object Into A Useful List?
Jun 23, 2009
I am currently writing unit tests for an application near completion (before management looks at it and turns it inside out). I am testing the business layer and a method is set to return a datatable of all "GroupID"s, which are simply an integer to represent the group that a user belongs to.
I'm assuming the best way to assert on this unit test would be to assert that the correct groupIDs are being returned from a controlled test database. However, I'm not sure how to assert on a datatable. Is the only (and best) possible way to accomplish this to simply loop through the datatable until it's empty and add each value to an array of integers? How would one go about asserting on this test?
When I query a DataTable using LINQ, are the rows returned as references? Either way, is it possible to control this behaviour, so that rows are either returned as references or as new rows?My guess is that all objects are returned as references by default, since that seems to be the normal behaviour in most programming languages.
I'm am creating a "pop-up" CheckedListBox over a button on my DataGridView. The values in the list are going to be filtered based on the value in column 0 of the DataGridView.I have already pulled in a "master" DataTable with two columns: ACODE and MATRIX.I want to call the following function and return an array of strings that I can use to build this CheckedListBox with. The line between "For Each r" and "Next" generates a "Number of indices is less than the number of dimensions of the indexed array". The number of items is variable in the array so I can't predefined it. I know I'm going down the wrong path.
Function StudyGroupSamples(ByVal sampleType As String) As String() Dim thisArray() As String Dim theseRows() As DataRow
I am converting DataTables to a generic list and need a quick and easy way to implement a Find function. It seems I am going to have to use a Predicate. Upon further investigation, I still can't seem to re-create the functionality. Private Function ByKey(ByVal Instance As MyClass) As Boolean Return Instance.Key = "I NEED THIS COMPARISON TO BE DYNAMIC!" End Function
Dim Blah As MyClass = MyList.Find(AddressOf ByKey) But I have no way to pass in a key variable to this predicate to do the comparison, as I used to do with DataTable..Dim MyRow as DataRow = MyTable.Rows.Find(KeyVariable) How can I setup a predicate delegate function in VB.NET to accomplish this?
Do not recommend LINQ or lambdas because this is question is regarding .NET version 2.0.
I have a table with 2 rows named timeStamp and value. I know I can iterate through the rows and create points and add them to a list (new point(timeStamp,value), but is there a way to do it without iteration?
I'm trying to convert an object, that is a list of something, to that list, but I'm having problems figuring out exactly how to do that. I have created the following code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim a As New List(Of String)
I have a model that returns a dataset to a view and builds a list. The crazy thing is that I have tested this code with IE, Safari on Mac and Windows, Chrome and Opera and all return data. However, on the iPad or iPhone, zero rows are returned from the dataset object. It seems that the model is in fact passing the dataset to the view. I am using jquerymobile to render the view for the iOS devices and have taken that out of the mix to test and it still doesn't work.
I have three sub tables that I want to process. For each I want to combine the rows, as they are only different by contents in the second column(I want to do the same to the fourth column, later):
I'd like to know after I've executed MySqlReder = MySqlCommand.ExecuteReader() how many rows it returned. If it's one I can continue processing with the data. If it's more than one I need to populate a drop down list box.
I'm trying to re-write an old VB 6 OCX into a VB.net DLL and I'm having problems accessing the object returned from a COM object. Here is a snippet of the old VB 6 code: Dim objResult as Object
Dim _tableBackLogs As System.Data.DataTable Do While i - 2 > 0 _tableBackLogs = Global.DataAccess.GetDataTable("SELECT SubjectID,SubjectName,Grade FROM SubjectPI WHERE RegNo='" & CInt(HttpContext.Current.Session("userName")) & "' AND Status='Fail' AND Semester='" & i - 2 & "'") i = i - 2
Doing this replaces the previous data in the DataTable. I want to retain the previous data i.e i want the new rows to be added to the DataTable w/o replacing the previous rows.
Dim query = (From p in Parent _ select _ p.ID, _ Tags = String.Join("|", p.Child.Select(Function(c) c.Tag.TagName).ToArray)).Take(100)
In the above query, when using Take to limit the rows returned, a separate SQL query is executed for each row to return the 'Tags' field. If I remove Take(100), a single query to sent to Sql Server.So, how do I limit the number of rows returned, while preventing a new sub query being executed for each row?
When I declare two datatables and fill them both from a datatable returned by a function in class, that when i filter the one it seems to filter the other aswell?
For example:
I declare the datatable and initiate my class:
Dim DatatableOne As New Datatable Dim DatatableTwo As New Datatable
Dim MyClass As New MyClass
I then call the function that returns a datatable and apply it to datatable1 and 2 Then fill two DataGrids with the table:
I have read many posts on this topic; among them and most recently .NET - Convert Generic Collection to Data Table. Unfortunately, all to no avail.
I have a generic collection of structures :
Private Structure MyStruct Dim sState as String Dim lValue as Long Dim iLayer as Integer End Structure
Dim LOStates As New List(Of MyStruct) I need to fill a DataTable with this list of structures but have no idea how to go about doing this. I am using vb.net in Visual Studio 2008.
After reading all the examples for list of T exists and Find and find first, none show how to handle multi-property objects. Below is bare bones example maybe someone could flesh out to show how this should be done.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim DatePriceList As New List(Of DateAndPrice) DatePriceList.Add(New DateAndPrice(Date.Parse("1/1/2000"), 10.12)) DatePriceList.Add(New DateAndPrice(Date.Parse("1/2/2000"), 11.12))
This should be a fairly common question, but I haven't found a straightforward answer anywhere.
If I instantiate an object within a function in VB.NET and return it, does it return it be reference or by value. IE - should I be worried about performance if I write something like this:
Public Function ret_obj_func() As big_object Dim ret_obj As New big_obj(<lots of stuff>) Return ret_obj End Function
If I call this function from somewhere else, will it instantiate the object in the ret_obj and then create a deep copy to pass back a copy to the caller, Or will it just pass back a reference?
Im still doing some amatuer programming, but now in .net and Ive come here with a question that I cant seem to find an answer to... Basically, Ive got a program im writing to interface into my companies AD and return some values, which then trigger other events etc..
The problem Ive run into is trying to find and easy way to compare the returned value when against a list of possible combinations (16 possibilities to be exact), and if its one of them then all good continue on but if not then I need to throw an error and exit sub.[code]...
I have a problem with a For Each Loop that doesn't make any sense. The For Each Loop returns values from a list which are Memory Ranges for a given device. When I check the count in the list it returns 3. The For Each only returns 1.
Here's my code: Private Sub DisplayDeviceResources(ByRef lvwResources As ListView, ByRef intClassIndex As Integer, ByRef intDeviceIndex As Integer) Dim curDeviceClasses As New DeviceClasses Dim lvwItem As ListViewItem EnumerateResources() [Code] .....
Limited to using v2.0 of .Net framework (we use VB.net) due to environmental constraints on our servers.I've got an ASP.net webpage which pulls data from a webservice that performs checks on user accounts in active directory. Operators can check multiple accounts at one time using the web interface. The webservice returns a list(of AccountCheck) objects which themselves contain single properties like username, email address, and List(of AccountError) objects which contain multiple properties.[code]What I want to do is using some kind of repeater, create multiple panels or divs which contain labels showing the username, email etc, and a gridview which has the accounterror list bound to it to show all the errors. The users could be checking 2, 5, 7 accounts at once, and is dynamic.
If I instantiate an object within a function in VB.NET and return it, does it return it be reference or by value. IE - should I be worried about performance if I write something like this:
Public Function ret_obj_func() As big_object Dim ret_obj As New big_obj(<lots of stuff>) Return ret_obj End Function
If I call this function from somewhere else, will it instantiate the object in the ret_obj and then create a deep copy to pass back a copy to the caller, Or will it just pass back a reference?
I run VS 2010 Premiuim version. I do a lot of data projects and wondered what option i have to setup concurrency if the returned object is a dataset and how do i do it? Does VS 2010 have any built in options for me to take advantage of?Or if anyone else has any other ways of doing this please advise or point me to any articles.
I am working in VB.net and have a Class, Foo, that implements an interface, IBar.I have a List of Foo's, but I need to pass a list of IBar's into a function, but I keep getting casting errors, even when I use DirectCast.My code is [code]MainWorks works, but it would be really annoying and inefficient to have to do that everywhere I want to call this function.
I need help converting DataTable to XML. I have done it using LINQ but I can't get exactly as I have to. I made a picture so that you can easily understand. The XML needs to be in certain format like below so I can't just use dt.writexml(). Artist ID needs to auto number. Songs are groupped by Artist. Prefer a solution in Linq coz that's what I have used throughout the project but I coundn't manage to get what I want here. The columns names are known so you can use something like this in the code. row.Field(Of String)("title")[code] i also have some more code that will query first created xml and do the grouping but still having album="albumname" in the song element as attribute. And it should be just one query from datatable to xml.i hate having to query against xml again to just refomat it.[code]
I need help converting datatable to xml using Linq. I could do it with hardcoded column names as you can see in my code .. but i need it without hardcoding it ..Example datatable ..My linq query ..
Dim xmlDoc As New XDocument( From row In dt.AsEnumerable() From row In dt.AsEnumerable()[code]......