We help IT Professionals succeed at work.
Get Started

ICollection method does not work as expected

Paulagier asked
Last Modified: 2016-01-07
Using #, WPF

Starting from a text file I need to:
1. Import this text file into a Data Table
2. Browse the data rows and in some case add an extra row
3. Convert this DT to a List
4. Display either the list or the DT in a datagrid (via a button click)

My code works well in step 1 and 4 but skip the 2 and 3
Unable to find why steps 2 and 3 are ignored

Here comes the C# method
 private ICollection CreateDataSource_vNodes() // vNodes
            //Create new DataTables and Rows
            DataTable dt_vNodes = new DataTable();
            DataRow dr;

            // Create columns with headers
            dt_vNodes.Columns.Add("IdNumber", typeof(int));
            dt_vNodes.Columns.Add("Position", typeof(string));

            //Read the file vNodes_Capture.txt and, for each line, create a new row in dt_vNodes
            string txtDataBase = "vNodes_Capture.txt";

            foreach (string Line in File.ReadLines(txtDataBase))
                //Split lines at delimiter ';''
                //Create new Row
                dr = dt_vNodes.NewRow();

                //IdNumber =
                dr[0] = Line.Split(';').ElementAt(0);

                //Position =
                dr[1] = Line.Split(';').ElementAt(1);

                //Add the row we created

            // Check values in column "Position" and add virtual bones if necessary    

            List<DataRow> rows = dt_vNodes.AsEnumerable().ToList();
            foreach (DataRow drow in rows)
                int currentidnumber = Convert.ToInt32(drow["IdNumber"]);
                string currentposition = drow["Position"].ToString();
                if (currentposition.ToLower() == "upspine") // convertie en minuscules
                    dt_vNodes.Rows.Remove(drow); // delete row with upspine
                    dt_vNodes.Rows.Add(new object[] { currentidnumber, "LeftShoulder" });
                    dt_vNodes.Rows.Add(new object[] { currentidnumber, "RightShoulder" });
                else if (currentposition.ToLower() == "pelvis") //convertie en minuscule
                    dt_vNodes.Rows.Remove(drow); // delete row with pelvis 
                    dt_vNodes.Rows.Add(new object[] { currentidnumber, "LeftHip" });
                    dt_vNodes.Rows.Add(new object[] { currentidnumber, "RightHip" });
                    dt_vNodes.Rows.Add(new object[] { currentidnumber, currentposition });


            // Converting the DT in a List<string> for further use

            foreach (DataRow drow in rows)

            //Return Dataview that populates the datagrid ItemsSource
            DataView dvN = new DataView(dt_vNodes);
            dgBB.ItemsSource = BonesRealVirtualS;
            return dvN;


Open in new window

and the xaml line
<DataGrid Name="dgbonesRV" HorizontalAlignment="Left" Margin="41,64,0,0" VerticalAlignment="Top" Height="214" Width="194"/>

Open in new window

text file is attached
Watch Question
Research Director
This problem has been solved!
Unlock 1 Answer and 5 Comments.
See Answer
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE