选择并转换以将通用列表转换为DataRow []

时间:2012-06-29 15:34:00

标签: c# linq casting dataset

有一个名为DsPerson的类型化数据集 以及一个名为ListPerson的自定义类型通用列表

DsPerson Ds1Person;

List<Person> ListPerson;

想要做类似于以下代码的事情,

请帮我纠正这个:

 DataTable dtPerson = Ds1Person.Tables["Person"];
 DataRow drPerson = dtPerson.NewRow();

 DsPerson.PersonRow[] updRows = ListPerson.Cast<Person>().Select(row => dtPerson.NewRow()
                      {
                          Nick = row.Nick,
                          Name = row.NameX,
                       }).ToArray();

需要这样的DataRow数组或通用DataTable。

由于我正在处理的代码规范,不在此处查找实体或任何其他替代方案。

真的很感激任何帮助...


More Clarifying :

需要什么:

像逆转这些: (相反的方式)

http://www.stackoverflow.com/questions/441023/fastest-way-to-convert-datatable-to-generic-list

或者更清洁和Linqy做类似的事情:

http://beecy.net/post/2009/05/18/convert-generic-list-to-datatable-using-reflection.aspx

获取正确的 DsPerson.PersonRow [] updRows 使用 adapter.Update(updRows);

出了什么问题?

Cast - Select语句有轻微错误: 我只知道它应该与此类似,所以我不确定这行代码的结构,

目前报告的错误是:

错误2无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'DsPerson.PersonRow []'。存在显式转换(您是否错过了演员?)

1 个答案:

答案 0 :(得分:2)

同样适用于强类型DataSet

DataRow[] updRows = 
    ListPerson.Select(p => dtPerson.Rows.Add(p.Nick, p.Name)).ToArray();