如何将一个列表的项目附加到具有相同结构的另一个列表

时间:2016-08-25 07:25:23

标签: c# oracle

我有2个相同结构的列表如下:

List<OUT_POMONTOCARLOLOCALDATA> items = new List<OUT_POMONTOCARLOLOCALDATA>();

OUT_POMONTOCARLOLOCALDATA root = new OUT_POMONTOCARLOLOCALDATA { id = 1, parent = 0, text = "Initiate" };
items.Add(root);

root = new OUT_POMONTOCARLOLOCALDATA { id = 11, parent = 1, text = "Parts Selection" };
items.Add(root);

root = new OUT_POMONTOCARLOLOCALDATA { id = 12, parent = 1, text = "Assumptions" };
items.Add(root);

现在我想附加另一个来自数据库并具有相同结构的列表

CREATE_ANALYSIS_SP_POPULATE_ANALYSISDATA fetchresult = this.domain.PopulateAnalysisData(input);

The fetchResult Contains OUT_POMONTOCARLODATA

这两个列表必须是最终列表,返回值应为OUT_POMONTOCARLODATA,其中包含所有硬编码数据库和数据库数据。

类结构如下:

public partial class OUT_POMONTOCARLOLOCALDATA 
{       
    public System.Nullable<System.Decimal> parent { get; set; }
    public System.Nullable<System.Decimal> id { get; set; }
    public System.String text { get; set; }
}

public partial class OUT_POMONTOCARLODATA
{       
    public System.Nullable<System.Decimal> parent { get; set; }
    public System.Nullable<System.Decimal> id { get; set; }
    public System.String text { get; set; }
}

public partial class CREATE_ANALYSIS_SP_POPULATE_ANALYSISDATA 
{      
   public List<OUT_POMONTOCARLOLOCALDATA> OUT_POMONTOCARLOLOCALDATA { get; set;}
   public List<OUT_POMONTOCARLODATA> OUT_POMONTOCARLODATA { get; set; }
}

我尝试使用以下代码,但遇到了一些问题

items.AddRange(fetchresult.OUT_POMONTOCARLODATA);

2 个答案:

答案 0 :(得分:0)

问题是您正在尝试使用.gitignore将Oracle Cursor附加到其他类型的列表中。首先读取光标返回的所有行,将它们转换为C#类型,然后将它们添加到列表中。

这些方面的东西:

AddRange

此时您有一个OracleCommand cmd = new OracleCommand(connectionObject); cmd.CommandText = "Oracle_PkrName.Stored_Proc_Name"; cmd.CommandType = CommandType.StoredProcedure; //Add parameters that are needed //Then add the output cursor: objCmd.Parameters.Add("YourCursorNameInProcedure", OracleType.Cursor).Direction = ParameterDirection.Output; connection.Open(); cmd.ExecuteNonQuery(); OracleDataAdapter da = new OracleDataAdapter(objCmd); da.Fill(dataset); ,因此您可以使用DataSet将其中的每个项目转换为Enumerable.Select。完成后,你可以这样做:

OUT_POMONTOCARLOLOCALDATA

有关如何从Oracle Cursor检索数据的信息,请参阅this question

答案 1 :(得分:0)

@SantyEssac:正确查看代码之后 我发现你错误地给出了items.AddRange(fetchresult.OUT_POMONTOCARLODATA);而不是items.AddRange(fetchresult.OUT_POMONTOCARLOLOCALDATA);

列表类型为OUT_POMONTOCARLOLOCALDATA,但您要添加OUT_POMONTOCARLODATA。

请尝试以下方法: items.AddRange(fetchresult.OUT_POMONTOCARLOLOCALDATA)