【问题标题】:Returning list of items返回项目列表
【发布时间】:2014-04-15 18:56:40
【问题描述】:

我正在从数据库中检索多条记录并将其存储在列表中。我创建了属性类,然后将要检索的数据分配给属性中的变量,然后尝试将所有值集合返回给进行函数调用但不起作用的客户端。为什么 ?请改正。

代码:

 public Properties FetchCoordinates(String FetchParam) 
    {
        String[] parts = FetchParam.Split(',');
        sqlCom.CommandText = "FetchCoordinates";
        sqlCom.CommandType = CommandType.StoredProcedure;

        sqlCom.Parameters.Add("@IMEI", SqlDbType.VarChar).Value = parts[0].ToString();
        sqlCom.Parameters.Add("@DateTimeFrom", SqlDbType.VarChar).Value = Convert.ToDateTime(parts[1].ToString());
        sqlCom.Parameters.Add("@DateTimeTo", SqlDbType.VarChar).Value = Convert.ToDateTime(parts[2].ToString());
        SqlParameter sqlParam = new SqlParameter("@result", SqlDbType.Int);
        sqlCom.Parameters.Add(sqlParam);
        sqlCom.Parameters["@result"].Direction = ParameterDirection.Output;
        List<Properties> props = new List<Properties>();
        Properties p;

        try
        {
            sqlCon.Open();
            using (SqlDataReader reader = sqlCom.ExecuteReader())
{
            while (reader.Read())
            {
                p = new Properties()
                {
                    Longitude = reader["Longitude"].ToString(),
                    Latitude  = reader["Latitude"].ToString()
                };
                props.Add(p);
                return p;
            }

}



        }



        catch (Exception ex)
        {



        }

        finally
        {
            sqlCon.Close();
        }

    }

}

Properties.cs

public class Properties
{
    public Properties()
    {
    }

    public string Longitude { get; set; }
    public string Latitude { get; set; }

}

【问题讨论】:

  • 您的函数正在尝试返回单个 Properties 对象。你应该返回List&lt;Properties&gt;

标签: c# asp.net list c#-4.0


【解决方案1】:

更改方法签名;

public List<Properties> FetchCoordinates(String FetchParam) 

而不是返回只是单个实例的p,而是返回 List 道具;

 while (reader.Read())
            {
                p = new Properties()
                {
                    Longitude = reader["Longitude"].ToString(),
                    Latitude  = reader["Latitude"].ToString()
                };
                props.Add(p);

            }

 return props;

【讨论】:

  • 好的,如果生成异常,那么应该将一些字符串消息传递给客户端,但是如何?它只返回列表
  • 我应该返回多少次 Props,我在 while 循环之后返回了一个,在 finally 块之后返回了一个,因为函数抛出了不是代码路径返回的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 2021-08-25
  • 2015-05-15
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多