如何使用c#返回方法中的多个对象?

roy*_*mse 0 c# return object

我有一个方法从我的数据库中检索多个结果,我想将这些结果作为一个对象返回到我的页面,但是目前它只是返回sql命令的最后一个结果.

我的页面上的代码调用方法:

Personen persoon1 = Personen.GetOneItem(int.Parse(TextBox_id.Text));
Run Code Online (Sandbox Code Playgroud)

方法代码:

public static Personen GetAllPersonWithID(int id)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["RestaurantConnection"].Connection
String;
    SqlCommand cmd = new SqlCommand("SELECT * FROM Personen where reservering_id=" + id, con);
    con.Open();
    SqlDataReader rdr = cmd.ExecuteReader();
    Personen Item = new Personen();
    while (rdr.Read())
    {
        Item.id = Convert.ToInt32(rdr["id"]);
        Item.menu_id = Convert.ToInt32(rdr["menu_id"]);
        Item.reservering_id = Convert.ToInt32(rdr["reservering_id"]);
    }
    con.Close();
    return Item;
}
Run Code Online (Sandbox Code Playgroud)

它只返回对象中的最后一个结果.

提前致谢

Jon*_*eet 5

基本上,您应该返回一个List<Personen>或类似的集合类型.(考虑将返回类型声明为IList<Personen>IEnumerable<Personen>使用List<Personen>作为实现类型.)

请注意,目前您反复覆盖单个对象的属性- 您也需要修复它.

例如:

...
List<Personen> list = new List<Personen>();
while (rdr.Read())
{
    Personen item = new Personen();
    item.id = Convert.ToInt32(rdr["id"]);
    item.menu_id = Convert.ToInt32(rdr["menu_id"]);
    item.reservering_id = Convert.ToInt32(rdr["reservering_id"]);
    list.Add(item);
}
...
return list;
Run Code Online (Sandbox Code Playgroud)

另外:

  • 您应该使用using语句来关闭连接,命令和阅读器
  • 您应该使用参数化SQL而不是在SQL中嵌入参数
  • 您应该遵循.NET命名约定,例如,MenuID而不是menu_id
  • 考虑转换为int或使用rdr.GetInt32()而不是调用Convert.ToInt32.
  • 如果Personen已经是复数名词,请将其更改为Person代表个人