包含List <anotherclass> </anotherclass>的复合类

时间:2015-01-30 22:54:55

标签: c# list collections

我想要一个包含我在我的软件中代表的名词的所有其他细节的类。

public class Customer
{
  public int Id { get; set; }
  public string Name { get; set; }
  public List<Note> Notes { get; set; } 
}

public class Note
{
  public string Notes { get; set; }
  public DateTime DateAdded { get; set; }
}

我使用SqlCommand从入口点或按钮点击两个不同的存储过程中获取数据 - 这没关系,下面是一个例子....

static List<Note> notes = new List<Note>();
static string conString = "Server=localhost;Database=MyDb;Trusted_Connection=True;";
SqlConnection con = new SqlConnection(conString);
SqlCommand cmd = new SqlCommand("sp_GetCustomerNotes", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
cmd.Parameters.Add("@CustomerId", SqlDbType.UniqueIdentifier);
cmd.Parameters["@CustomerId"].Value = 1;
SqlDataReader reader = cmd.ExecuteReader();    

while (reader.Read())
{
   Note note = new Note(
          (string)reader["Notes"].ToString(),
          DateTime.Parse(reader["DateAdded"].ToString())
      );

      notes.Add(note);
}

这都是非常标准的东西......

这是我的问题。获取Customer对象的数据后,我希望仅在单个类/对象中包含来自我的Note对象的所有注释:Customer。那我该怎么做呢?

为Customer表执行相同的代码我尝试使用foreach循环无效...

while (reader.Read())
{
  // removed because this is the same code as above with a diff sproc
  Customer customer = new Customer();

  customer.Name = (string)reader["Name"];

}

foreach (Note note in notes)
    customer.Notes = note;
  // ERROR HERE --> 
  Error 4   Cannot implicitly convert type 'Note' to 'System.Collections.Generic.List<Note>'

所以我有点不清楚如何做到这一点。

请帮助。

2 个答案:

答案 0 :(得分:0)

如果你想为Notes添加注释(如果它是List&lt; Notes&gt;的集合),你可以这样添加:

 customer.Notes.Add(note);

答案 1 :(得分:0)

所以我发现即使已经实例化了Customer对象,也需要创建Notes类,它是Customer类的成员,因此我创建了一个方法调用来获取笔记集合。

首先,我创建了一个获取笔记的函数....

static List<Note> GetCustomerNotes()
{
  Customer c = new Customer();
  c.Notes = new List<Note>();

  foreach (Note note in notes)
    c.Notes.Add(note);

  return c.Notes;
}

然后我在我重载的构造函数中调用了这个函数......

while (reader.Read())
{          
   Customer customer = new Customer(
      (string)reader["Name"],
      GetCustomerNotes()
  );
}