2013-07-15 3 views
0

У меня есть DataTable с 3-мя столбцами:Разделить DataRow в нескольких DataRows

Name      age    profession 

John|James|Billy  25|31|28   professor 

Я хочу разделить эту строку, чтобы иметь 3 строки:

Name      age    profession 

John      25    professor 
James     31    professor 
Billy     28    professor 
+4

Вы попробовали что-нибудь? –

+1

Каким будет ваш следующий вопрос? это «У меня есть 3 DataRows, которые мне нужно объединить в один?». попробуйте что-нибудь, разместите свою проблему с кодом. мы постараемся вам помочь –

ответ

2

String.Split и петли являются вашими друзьями.

var tblFlattenedStudents = tblStudents.Clone(); 
foreach (DataRow row in tblStudents.Rows) 
{ 
    var names = row.Field<string>("Name").Split('|'); 
    var ages = row.Field<string>("age").Split('|'); 
    var profession = row.Field<string>("profession"); 
    for (int i = 0; i < names.Length; i++) 
    { 
     var newRow = tblFlattenedStudents.Rows.Add(); 
     newRow.SetField("Name", names[i]); 
     newRow.SetField("age", ages.ElementAtOrDefault(i)); 
     newRow.SetField("profession", profession); 
    } 
} 
+0

Спасибо u @TimShmelter !!! – Zack09

1

Предполагая, что вы хотите, чтобы данные ПОКО, а не данные таблицы/компл здесь некоторые плохо написанный код, который может удовлетворить ваши потребности.

public class Teacher 
{ 
    public string Name { get; set; } 
    public string Age { get; set; } 
    public string Profession { get; set; } 

    public static IEnumerable<Teacher> YieldFromCSV(string nameData, string ageData, string professionData) 
    { 
     // you really want to include error checking here 
     var names = nameData.Split('|'); 
     var ages = ageData.Split('|'); 
     var professions = professionData.Split('|'); 

     for (var i = 0; i < names.Length; i++) 
     { 
      yield return new Teacher 
       { 
        Name = names[i], 
        Age = ages.ElementAtOrDefault(i), 
        Profession = professions.ElementAtOrDefault(i) ?? professions.ElementAtOrDefault(0) 
       }; 
     } 
    } 
} 
Смежные вопросы