如何在c#中添加对象列表
本文关键字:添加 对象 列表 | 更新日期: 2023-09-27 18:07:14
我有一个用户,他有多辆车。我需要创建一个包含他所有汽车的所有属性的对象列表。
他CarTableUserID UserCarID
101 C101
101 C102
101 C103
His Car Properties Table
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的性质。我该怎么做呢?谢谢你
我对你的确切问题有点不清楚,但我会试一试:
似乎是创建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);
}
你用来处理查询结果的方法在我看来很奇怪。你这样做有什么特别的原因吗?
你的问题不太清楚。这似乎是一个SQL查询问题,而不是列表连接问题。
假设这些都是SQL Server中的表,您可以通过一个查询从数据库中获得结果:
Select * FROM CarTable, CarPropertiesTable
WHERE CarTable.UserId = CarPropertiesTable.UserId
AND CarTable.UserId = @ID
然后迭代返回的datarow并将它们转换为您的对象(参见关于创建Car类的另一个答案,这是一个非常好的主意),然后将它们序列化为JSON。