如何在c#中添加对象列表

时间:2013-04-03 22:09:55

标签: c# list object

我有一个拥有多辆车的用户。我需要创建一个他所有汽车所有属性的对象列表。

他的CarTable

UserID   UserCarID
 101       C101
 101       C102
 101       C103

他的汽车物业表

UserCarID   Model  Year  Color
C101        Audi   2012  Black
C102        BMW    2012  Silver
C103        VW     2012  White
C104        Audi   2013  Black
C105        VW     2013  White

我想要一个列表,以便只显示他的汽车列表

UserID UserCarID   Model  Year  Color
101    C101        Audi   2012  Black
101    C102        BMW    2012  Silver
101    C103        VW     2012  White

我试过

using (SqlConnection con = .....)
        {
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandText = "Select * FROM CarTable Where UserID = @ID";
            cmd.Parameters.Add(new SqlParameter("@ID", UserID));

            SqlDataReader reader = cmd.ExecuteReader();

                if (reader.HasRows)
                {
                    for (int i = 0; i <= tempID.Length - 1; i++)
                    {
                        tempID[i] = -1;
                    }
                    int j = 0;
                    while (reader.Read())
                    {
                        tempID[j] = (int)reader["ID"];
                        j++;
                    }
                    reader.Close();
                }
            con.Close();

        }
        foreach (int carID in tempID)
        {
            if (carID > -1) return JsonConvert.SerializeObject(getAllCars(carID));
        }

        public static object getAllCars(int id){
            .........
            return carPropertiesObject;
        }

getAllCars返回Car的所有属性列表。 这有效,但我只获得C101的属性。我该怎么做呢?谢谢

2 个答案:

答案 0 :(得分:1)

我对你的确切问题有点不清楚,但我会试一试:

似乎是创建Car类的好时机:

class Car
{
    int UserID;
    int UserCarID;
    string Model; 
    int Year;  
    string Color;
}

然后

List<Car> cars = new List<Car>();
while(reader.read())
{
     Car newCar = new Car();
     newCar.UserId = Convert.ToInt32(reader["UserId"]); //Should probably use TryParse here, but I will use ToInt32 for simplicity sake
     //same for other columns
     cars.Add(newCar);
}

您用来处理查询结果的方法对我来说非常奇怪。您是否有这样的具体原因?

答案 1 :(得分:1)

你的问题不是很清楚。这似乎是一个SQL查询问题,而不是列表加入问题。

假设这些都是SQL Server中的表,您可以使用单个查询从数据库中获取结果:

Select * FROM CarTable, CarPropertiesTable
WHERE CarTable.UserId = CarPropertiesTable.UserId
AND CarTable.UserId = @ID

然后迭代返回的DataRows并将它们转换为您的对象(请参阅有关创建Car类的其他答案,这是一个非常好的主意),然后将它们序列化为JSON。