Solved

Find a specific object in a generic List collection

Posted on 2014-02-21
15
396 Views
Last Modified: 2014-02-25
I want to read the database into a generic List, and then compare the specific object in this List with other value.  I found a web site to show how to read database into generic List and bind gridview into generic list.

http://www.aspsnippets.com/Articles/How-to-bind-GridView-with-Generic-List-in-ASPNet-using-C-and-VBNet.aspx

But, I want to know how to find an object where CustomerId="10".  I used ASP.NET in VB, not C#, I need sample code.  Thank you.
0
Comment
Question by:5281
  • 8
  • 7
15 Comments
 
LVL 63

Accepted Solution

by:
Fernando Soto earned 500 total points
ID: 39877742
Hi 5281;

The following code snippet using the info from the link you posted should do what you want.

Dim findCust As String = "10"
Dim customer As Customer = (From c in customers _
                            Where c.CustomerId = findCust _
                            Select c).SingleOrDefault()

Open in new window

0
 

Author Comment

by:5281
ID: 39877861
Thanks.  Where should I put that code snippet in the application?  Could you merge part of original code with your code together?  So I know where to add it?  Thank you.
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39877882
Seeming that the code you requested finds a single record within a list of records. It can be placed in the code where you have access to the, List<Customers> customers, and know which CustomerId you are looking for and that those variables have been populated.
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:5281
ID: 39877988
What does this code snippet return?   In your snippet, Dim customer as Customer, is customer a class?  How can I use customer (the result of query)?  Could you provide some code sample?  

The gridview is binded with generic list now.  How can I access the full record? Could you provide some code sample?

Thank you.
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39878031
To your question, "What does this code snippet return?", it returns a single instance of a Customer object if any exist in the list that match the criteria stored in the variable findCust or a null value if none were found.

To your question, "In your snippet, Dim customer as Customer, is customer a class?", customer is an instantiated object which is of type Customer class.

To your question, "How can I use customer (the result of query)?",
Console.WriteLine("Customer ID is = " & customer.CustomerId)
Console.WriteLine("Contact Name is = " & customer. ContactName)
Console.WriteLine("City of customer is = " & customer.City)
Console.WriteLine("Country is = " & customer.Country)

Open in new window

0
 

Author Closing Comment

by:5281
ID: 39878092
Thank you.
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39878140
Not a problem, glad to help.
0
 

Author Comment

by:5281
ID: 39886432
Fernando Soto,

If query produces multiple records (multiple customers), how to loop throug each record?  sample code please.  I will create a new question if you like.  Thanks.
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39886566
Hi 5281;

Sorry I assume that you were querying the Customer table with a CustomerId, primary key, and thus should be the only one, apparently that's not the case, the following code snippet should return a List of Customers from the query.

Dim findCust As String = "10"
Dim customer As List(Of Customer) = (From c in customers _
                                     Where c.CustomerId = findCust _
                                     Select c).ToList()

Open in new window

0
 

Author Comment

by:5281
ID: 39886914
Thanks.  But how to get the specific object for that list (customer)?  How to write that loop to get the specifc item, like Contact Name, city?
0
 

Author Comment

by:5281
ID: 39886946
I can use this way.  

For Each Item In customer

                        Response.Write(Item.ContactName & " ")
                        Response.Write(Item.City & " ")
Next
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39886967
Hi 5281;

Just iterate through the collection of customer As shown in the code snippet below.

                                     
For Each row in customer
    Console.WriteLine("Contact Name : " & row.ContactName)
    ' ...
    Console.WriteLine("City : " & row.City
Next

Open in new window

0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39886973
Yes, that is the way.
0
 

Author Comment

by:5281
ID: 39886995
Thanks a lot.
0
 
LVL 63

Expert Comment

by:Fernando Soto
ID: 39887004
Not a problem, glad to help.
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

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

Suggested Solutions

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

830 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