C# 播放键入的列表<&燃气轮机;为DataAdapter更新做好准备

C# 播放键入的列表<&燃气轮机;为DataAdapter更新做好准备,c#,linq,dataset,generic-list,C#,Linq,Dataset,Generic List,我们有: List<Person> listPerson ; 可能会将listPerson转换为List或DataTable或适配器更新方法可接受的任何其他内容 欢迎使用LinQ或任何更健壮的代码 你建议哪种方式?我能想到的最接近: 您可能需要一个lambda来将Person转换为PersonRowSqlDataAdapter.Update方法可以采用以下类型的参数 1) 更新(数据行[]) 2) 更新(数据集) 3) 更新(数据表) 4) 更新(DataRow[],DataTa

我们有:

List<Person> listPerson ;
可能会将listPerson转换为
List
或DataTable或适配器更新方法可接受的任何其他内容

欢迎使用LinQ或任何更健壮的代码


你建议哪种方式?

我能想到的最接近:


您可能需要一个lambda来将Person转换为PersonRow

SqlDataAdapter.Update方法可以采用以下类型的参数

1) 更新(数据行[]) 2) 更新(数据集) 3) 更新(数据表) 4) 更新(DataRow[],DataTableMapping) 5) 更新(数据集、字符串)

因此,您已经有了一份人员列表,最简单的方法是:

        DataRow[] personRows= Persons.Cast<DataRow>().ToArray();
        sqlDataAdapter.Update(personRows);
DataRow[]personRows=Persons.Cast().ToArray();
sqlDataAdapter.Update(personRows);

希望这有帮助……

为什么要绕道DataAdapter?嗨,Henk,起初我尝试了实体,但有一种情况,我应该执行一些繁重的多线程进程,而EF缺少这一点。现在这个过程是用一个数据集和我在问题中提到的列表完成的,现在我想把这个沉重的列表返回到数据库中。为什么不直接将
Person
调用添加到
DataTable
?我的意思是,您可以定义
DataTable
包含的值。编写一个方法,从
Person
类中提取信息,以便它保存信息。我这样做是为了为我从事的一个项目举办一个定制课程。你所要做的就是抓取
数据表
并在需要再次检索对象时检查每个条目。这些都是对每条记录的大量分析,当我发现由于EF缺乏线程安全性而无法使用EF后,我开始进行数据集和脱机工作,并填写类型列表,通过这种方式,性能提高了10倍左右,现在我想将其返回数据库,我可以通过LinQ select或一些迭代将其返回,如果您有更好的想法,请显示一段代码,这将更有帮助,无论如何,我希望看到任何更好的方法所有您建议的答案都是有帮助的,不幸的是,虽然我喜欢@HatSoft的方式,并试图以类似的方式进行此操作,但这仍然是不正确的,需要更多的linq和映射部分来匹配数据库列。谢谢,它应该可以完成这项工作。您能在我的示例实例上给出两行代码来简化它吗?也许这比MSDN样本更好。再次感谢您,我将尝试,抱歉我大约一小时后才能回答,谢谢这正是我想要的,但不幸的是,它导致了以下错误:InvalidCastException:“无法将'MP.Person'类型的对象强制转换为'System.Data.DataRow'。”抱歉回答晚了,这是不正确的,我的朋友,因为它应该被映射到我们拥有的数据行,我会编辑文章指出它
        DataRow[] personRows= Persons.Cast<DataRow>().ToArray();
        sqlDataAdapter.Update(personRows);