먼저이 foreach 루프는 사용자 사전을 거쳐야합니다. 'int'값은 주문 목록입니다 ("ControlNumber").프로그래밍 방식으로 여러 사용자 클래스 만들기
foreach (KeyValuePair<string, int> e in errorOrders)
{
//finds error percentage for user
errPercentage = GetErrPercentage(e.Key);
Console.WriteLine("Percentage of errors for " + e.Key + ": " + Math.Round(errPercentage, 2) * 100 + "%");
//finds orderPerHour for user
ordersPerHour = OrdersPerHour(e.Key);
//Selects random orders for user based on errPercentage, saves to DT "randomOrders"
RandomOrders = RandomSelect(errPercentage, e.Key);
Console.WriteLine("Number of orders pulled : " + RandomOrders.Rows.Count);
//Print out orders randomly collected
for (int i = 0; i < RandomOrders.Rows.Count; i++)
{
Console.WriteLine(RandomOrders.Rows[i]["ControlNumber"]);
}
Console.WriteLine("\r\n");
//Creates class and fills class for each user
FillUserListClass(RandomOrders);
}
아래 부분은 FillUserListClass 기능입니다. 이것은 내 문제가 발생하는 곳입니다. 지금 당장 아래 함수의 마지막 줄에 오류 ("개체 참조가 개체의 인스턴스로 설정되지 않았습니다.")가 나타납니다. "ControlNumber"를 UserList [username] 클래스에 추가하려고합니다.
이제이 기능을 변경하는 것에 대한 제안을드립니다. 본질적으로, 나는 각 사용자에 대한 클래스를 만들고이 클래스 내에서 각 사용자의 "ControlNumbers"를 포함하는 List가됩니다.
누군가 LINQ를 사용하여이 작업을 시도했지만 그 문제가 내 머리 위로 들려서 문제를 해결할 수 없었습니다. 경우
public static void FillUserListClass(DataTable dt)
{
Dictionary<string, List<int>> UserList = new Dictionary<string, List<int>>();
{
foreach (DataRow row in dt.Rows)
{
object value = row["ControlNumber"];
if (value == DBNull.Value)
{
row.Delete();
}
}
for (int ctr = 1; ctr <= dt.Rows.Count; ctr++)
{
var row = dt.Rows[ctr];
var userName = row["User"].ToString();
if (UserList.ContainsKey(userName))
{
UserList[userName].Add(Convert.ToInt32(row["ControlNumber"]));
}
else
{
UserList.Add(row["User"].ToString(), null);
UserList[userName].Add(Convert.ToInt32(row["ControlNumber"]));
}
}
}
은 고객이 필요로 여기에 내가 채우려는 내 사용자 클래스 (당신이 갈 수있는 가장 좋은 방법이라고 생각한다면, 나는 또한 최대 여기에 LINQ 코드를 넣을 수 있습니다)
public class User
{
private string _name;
public string UserName { get; set; }
public List<int?> ControlNumber { get; set; }
public User (string username)
{
_name = username;
}
public User()
{
}
}