Iterating System.Collection.Generic.List.Add Does Not Work As Expected?
Mar 7, 2010
I was building an application for a project with .NET 3.5 and I noticed a weird behaviour of the List.Add method:
I have built my own class to organize data pulled from a database, and I use a while cycle to iterate through it.
However, when I List.Add(item), the whole content of the list is substituted with the last content pulled.
An example:
Suppose you have 3 users in a DB, each one identified with an ID and a username:
| ID | username |
| 1 | John |
| 2 | Fred |
| 3 | Paul |
and you have a "Users" class defined as
public class Users
{
private Int32 iD;
private String username;
public Int32 ID
{
get { return iD; }
set { iD = value; }
}
public String Username
{
get { return username; }
set { username = value; }
}
}
So you write this function:
[... SQL definitions - sdr is a SqlDataReader ...]
List<Users> userlist = new List<Users>();
if (sdr.HasRows) //There are users
{
Users user = new Users();
while (sdr.Read())
{
user.ID = sdr.GetInt32(0);
user.username = sdr.GetString(1);
userlist.Add(user);
}
}
What you expect (I expect) is userlist containing:
| ID | username |
| 1 | John |
| 2 | Fred |
| 3 | Paul |
What I actually get is, instead
| ID | username |
| 3 | Paul |
| 3 | Paul |
| 3 | Paul |
I need to cache System.Collection.Generic.List object with expiration time
var Root = from feed in feedhotel.Descendants(ota + "HotelContent") where (feed.Attribute("HotelCode") != null) select new xmlhotel() { }; return Root.ToList();
Is it possible to cache Root.ToList() for some time....
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable' to 'hcgames.ObjectClasses.ShoppingCart.ShoppingCartCartAddon'. An explicit conversion exists (are you missing a cast?)
From this query
ShoppingCartItems items = Cart.GetAllItems(); ShoppingCartCartAddons addons = Cart.GetAllAddons(); var stuff = from x in items select new ShoppingCartItem() { ProductID = x.ProductID, Quantity = x.Quantity, Name = x.Name, Price = x.Price, Weight = x.Weight, Addons = (from y in addons where y.ShoppingCartItemID == x.ID select y) };
I have following two collections,1. CategoryList, 2. ItemList. I need to get the collection which contains the rows shown in below in "Expected Result List".could you please provide me the LINQ query on collections to get this resulted List?
i want to check my collection so i can add a new customer as long as the username does not exist in the collection i do not want 2 customers to be able to have the same username.
i have been trying many different things to try to get this to work but i am not exactly sure what i should be doing I have a aspforum and collection C# class of the list.
here is some things that i have tried
CustomerExists() i also have a collection of List<Customers> //HERE IS MY EXISTS METHOD public static Boolean IfCustomerExists(string login) { List<Customer> theGuy = Collections.Customers; bool exist = false; foreach (Customer customer in theGuy)
System.InvalidCastException iterating through Viewdata
I need to replace the code "<%=Html.DropDownList("Part", (SelectList)ViewData["Parts"])%>" for dropdown in the following manner for some reason. <% foreach (Hexsolve.Data.BusinessObjects.HSPartList item in (IEnumerable)ViewData["Parts"]) { %> "> <%=item.PartName %> <%=item.IssueNo %> <% } %>
I am getting error converting SelectedList to IEnumerable) Error: Unable to cast object of type 'System.Web.Mvc.SelectList' to type 'System.Collections.Generic.IEnumerable`1[Hexsolve.Data.BusinessObjects.HSPartList]'. Is this the right way to iterate through viewdata[].
However, when I try to build the control I'm getting the error as shown in the subject. I've tried searching, and it seems the signature for the original function matches the one I have, and all other solutions I've seen uses the same signature.
and print the indexes in an HTML list, here's the results that I get...
Using blockRetrievedList.BinarySearch('Larry'); : 1 Using blockRetrievedList.BinarySearch('Mike'); : -5 Using blockRetrievedList.BinarySearch('Sue'); : -5 Using blockRetrievedList.BinarySearch('Bob'); : -1 Using blockRetrievedList.BinarySearch('John Barrowman'); : -1
So while Larry comes out fine at index one, John Barrowman and Bob should be indexes 2 & 3 respectively. However, they're coming up -1 meaning they're not recognized as being the collection. Further Mike (who was originally in the set, but who has now been replaced by John Barrowman is coming up -5. Isn't that supposed to be -1? And why on Earth is Sue (who is index 0, returning -5 as well?
I am writing unit tests for fluent Nhibernate, when I run the test in isloation it passes, but when I run multiple tests. or run the test more than once it starts failing with the message below System.ApplicationException : For property 'Id' expected '1' of type 'System.Int32' but got '2' of type 'System.Int32'
List<Dictionary <string,object>> I am reading about the list and collection, If possible, what are the different ways that I can utilize the list of dictionary collections..... gives me different examples or areas where I can use it.
What do I have wrong here? This page is essentially broken into 5 divs, the middle 3 divs that represent the left, middle and right page columns are wrapped in a div with the id content. I linked to the page if you want to view the source. It wouldn't go in this message as a snippet very well when I tried.
Here is the style for #content
#content { background-color:White; }
How do I get the whole background of #content to show as white? link to a live version of[URL]
I have a message (System.Web.Mail.MailMessage) whose body is 400 bytes long, nothing in cc or bcc, has valid to/from addresses. But when I get to System.Web.Mail.WebMail.Send(msg) I get the exception [HttpException (0x80004005): Value does not fall within the expected range.] Not sure where to look. Google only provided a handful of options, mostly related to CDO.
I have a drop down list that is populated with customer IDs. When I write to the db a value of 11 is written for the customer ID 13 when it is chosen from the drop down . I thought this was because I was using the SelectedIndex and how it is 0 based like an array. In the drop down list I choose 13. Id 2 is missing from the drop down list because that record was deleted. I thought these two things together explained the two digit discrepancy with the what i got when I used the Selected Index property. I then decided to use the SelectedValue property which should give me 13 when I choose 13 in the drop down list.
The same thing happens when I use the SelectedValue property. I used the SelectedValue property and chose 13 in the drop down list. This also gave me 11 as the value that was written to the db. This makes no sense to me. If I chose 13 in the drop down then 13 should have been written to the db when using the SelectedValue.
I'm using a Sql Data Source temporarily to populate this with the CustID.
I dont know what I have done but my add blog or news item functionality is broken. It works fine locally but not on the server (.net 3.5 mvc 2 I believe).
[Code]....
The interesting thing is the path P:Web_DevelopmentAHNDEVControllersAdministratorController.vb. This is my local path on my machine but not the
I have a list view control. Each row within it has a rowid and a textbox where a note(user enters relevant info to that particular record) is entered. On a paging event I store the rowID and the note text in a generic list for retrieval if the user pages back later on. Goal here is to keep the text the user has entered. (see the code below)This generic list does in fact get populated correctly when I go to the next page currently. I can see this in Visual Studio. So now, when the user goes back to the first page I want to run a test within my Listviews ItemDataBound event. I want to see if the row ID being tested is part of the generic list. If so, I then want to take the corresponding note that is also within the list and bind it to the text box. However, I don't know how to write the correct conditional for this and how to bind the textbox if the conditional evaluates to true.
Calling Index view is giving me this very very annoying error . Can anybody tell me what to do about it
Error:The model item passed into the dictionary is of type 'System.Collections.Generic.List1[MvcApplication13.Models.Groups]', but this dictionary requires a model item of type 'MvcApplication13.Helpers.PaginatedList1[MvcApplication13.Models.Groups]'.
public ActionResult Index(int? page) { const int pageSize = 10; [code].....
I have two generic list with Hotel class object. Both List contains hotel ID. I want to retrieve common hotel id from both Hotel List and assign to new HotelList.I have done following code for that but any other sort way to implement this kind of functionality.
[Code]....
Note: I dont want to use Linq because I am working on framwork 2.0
I'm trying to render out some images on an aspx page. Error I'm getting in the code below is:
DataBinding: '_Default+ImageThing' does not contain a property with the name 'FileName'. public class ImageThing { public string FileName; } private void DisplayThumbnailImages() { ImageThing imageThing1 = new ImageThing(); ImageThing imageThing2 = new ImageThing(); imageThing1.FileName = "asdf.jpg"; imageThing2.FileName = "aaa.jpg"; List<ImageThing> imagesToRender = new List<ImageThing>(); imagesToRender.Add(imageThing1); imagesToRender.Add(imageThing2); Repeater1.DataSource = imagesToRender; Repeater1.DataBind(); }