C# 如何使用DataTable将对象数组(仅字段)保存到DB?

C# 如何使用DataTable将对象数组(仅字段)保存到DB?,c#,arrays,database,soap,C#,Arrays,Database,Soap,我有一个Web服务(SOAP),从那里我可以得到一个ArrayOfHumans(对象数组),我可以得到数组,但我很难把它保存到DB,就像从数组中获取一个对象,然后获取一个属性的值并将其保存在表列中一样简单(或者可能不是那么简单,我只是不知道!)。我有以下代码: public JsonResult returnAllHumans() { TestService.TestServiceSoapClient soapClient = new TestService.TestServiceSoa

我有一个Web服务(SOAP),从那里我可以得到一个ArrayOfHumans(对象数组),我可以得到数组,但我很难把它保存到DB,就像从数组中获取一个对象,然后获取一个属性的值并将其保存在表列中一样简单(或者可能不是那么简单,我只是不知道!)。我有以下代码:

public JsonResult returnAllHumans()
{
    TestService.TestServiceSoapClient soapClient = new TestService.TestServiceSoapClient();
    object[] humansfromWS = soapClient.GetAllHumans();

    System.Data.DataTable table = new System.Data.DataTable();
    table.Columns.Add("FirstName", typeof(string));
    table.Columns.Add("LastName", typeof(string));
    table.Columns.Add("Gender", typeof(string));
    table.Columns.Add("Age", typeof(int));


    for (int i = 0; i < humansfromWS.Length; i++){
        table.Rows.Add(new object[] {
                    humansfromWS[i].Age(); (And my problem is here!)
publicjsonresult returnAllHumans()
{
TestService.TestServiceSoapClient-soapClient=新建TestService.TestServiceSoapClient();
对象[]humansfromWS=soapClient.GetAllHumans();
System.Data.DataTable table=新的System.Data.DataTable();
table.Columns.Add(“FirstName”,typeof(string));
table.Columns.Add(“LastName”,typeof(string));
表.列.添加(“性别”,类型(字符串));
表.列.添加(“年龄”,类型(int));
for(int i=0;i

我不知道我做了什么错事才把它从我的数组中弄出来?有人能给我指出正确的方向吗?

humansfromWS[I]
是一个对象,它没有
Age
方法。您必须将其强制转换为正确的类型。

请查看有关该方法的文档。有两个版本的
Add
。一个版本采用
数据行
,另一个版本采用单个行的值数组

public JsonResult returnAllHumans()
{
    TestService.TestServiceSoapClient soapClient = new TestService.TestServiceSoapClient();
    object[] humansfromWS = soapClient.GetAllHumans();

    System.Data.DataTable table = new System.Data.DataTable();
    table.Columns.Add("FirstName", typeof(string));
    table.Columns.Add("LastName", typeof(string));
    table.Columns.Add("Gender", typeof(string));
    table.Columns.Add("Age", typeof(int));


    for (int i = 0; i < humansfromWS.Length; i++){
        var humanFromWS = humansfromWS[i];
        table.Rows.Add(new object[] {
                    humansFromWS.FirstName,
                    humansFromWS.LastName,
                    humansFromWS.Gender,
                    humanFromWS.Age});
    }
publicjsonresult returnAllHumans()
{
TestService.TestServiceSoapClient-soapClient=新建TestService.TestServiceSoapClient();
对象[]humansfromWS=soapClient.GetAllHumans();
System.Data.DataTable table=新的System.Data.DataTable();
table.Columns.Add(“FirstName”,typeof(string));
table.Columns.Add(“LastName”,typeof(string));
表.列.添加(“性别”,类型(字符串));
表.列.添加(“年龄”,类型(int));
for(int i=0;i

for(int i=0;i
我还有一个问题,我该怎么做?你能给我举个例子吗?当我编译和检查它时,我可以看到humansfromWS数组,看到它的对象,这些对象具有属性Age、name等,我知道它不是一个方法,而是一个属性。数组中元素的类型是什么?类型是Humans?因此转换为Humans:
humansfromWS[i]作为人类
FYI,有比
DataTable
更新、更方便的方法来读取和写入数据库。例如,您可以使用实体框架。我知道,但我必须这样做。当然,您可以在项目中的其他代码中找到一些将数据输入数据库的示例?我从头开始编写,这是第一次当我看到这一点时,我对其他语言更加熟悉。我明白了这个概念,我对语法感到很难理解。
    for (int i = 0; i < humansfromWS.Length; i++){
        var humanFromWS = humansfromWS[i];
        var row = table.NewRow();
        row["Age"] = humanFromWS.Age;
        row["FirstName"] = humanFromWS.FirstName;
        row["LastName"] = humanFromWS.LastName;
        row["Gender"] = humanFromWS.Gender;
        table.Rows.Add(row);
    }