【问题标题】:Select and Cast to convert a Generic List into DataRow[]选择并投射以将通用列表转换为 DataRow[]
【发布时间】:2012-07-01 03:47:34
【问题描述】:

有一个名为 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 Array 或一个这样制作的通用 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 搭配使用 适配器.更新(updRows);

怎么了?

Cast - Select 语句有轻微错误: 就是知道应该和这个差不多,所以对这行代码的结构不太确定,

目前报告的错误是:

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

【问题讨论】:

    标签: c# linq casting dataset


    【解决方案1】:

    这同样适用于强类型DataSet

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

    【讨论】:

    • +1,谢谢蒂姆,我会在几分钟内试一试,此外还有什么方法可以映射列吗?我也不应该使用 DsPerson.PersonRow 或任何其他类型的替代品吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多