C# 将一个数据行拆分为多个数据行
我有一个包含3列的数据表:C# 将一个数据行拆分为多个数据行,c#,.net,datatable,datarow,datacolumn,C#,.net,Datatable,Datarow,Datacolumn,我有一个包含3列的数据表: Name age profession John|James|Billy 25|31|28 professor 我想将这一行拆分为3行: Name age profession John 25 professor Jam
Name age profession
John|James|Billy 25|31|28 professor
我想将这一行拆分为3行:
Name age profession
John 25 professor
James 31 professor
Billy 28 professor
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);
}
}
var tblFlattenedStudents=tblStudents.Clone();
foreach(tblStudents.Rows中的数据行)
{
变量名称=行字段(“名称”).Split(“|”);
var ages=行字段(“age”).Split(“|”);
var专业=行字段(“专业”);
for(int i=0;i
字符串。拆分
和循环是您的朋友
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);
}
}
var tblFlattenedStudents=tblStudents.Clone();
foreach(tblStudents.Rows中的数据行)
{
变量名称=行字段(“名称”).Split(“|”);
var ages=行字段(“age”).Split(“|”);
var专业=行字段(“专业”);
for(int i=0;i
假设您想要的是POCO而不是数据表/数据集,这里有一些写得不好的代码可以满足您的需要
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)
};
}
}
}
公共课堂教师
{
公共字符串名称{get;set;}
公共字符串年龄{get;set;}
公共字符串职业{get;set;}
公共静态IEnumerable YieldFromCSV(字符串名称数据、字符串年龄数据、字符串专业数据)
{
//你真的想在这里包括错误检查吗
var names=nameData.Split(“|”);
var ages=ageData.Split(“|”);
var professions=professionData.Split(“|”);
for(var i=0;i
假设您想要的是POCO而不是数据表/数据集,这里有一些写得不好的代码可以满足您的需要
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)
};
}
}
}
公共课堂教师
{
公共字符串名称{get;set;}
公共字符串年龄{get;set;}
公共字符串职业{get;set;}
公共静态IEnumerable YieldFromCSV(字符串名称数据、字符串年龄数据、字符串专业数据)
{
//你真的想在这里包括错误检查吗
var names=nameData.Split(“|”);
var ages=ageData.Split(“|”);
var professions=professionData.Split(“|”);
for(var i=0;i
你试过什么吗?下一个问题是什么?是不是“我有3个数据行需要合并成一个?”。试着用代码发布你的问题。我们会尽力帮助你你试过什么吗?你下一个问题是什么?是不是“我有3个数据行需要合并成一个?”。试着用代码发布你的问题。我们会尽力帮助你