2
こんにちは、私のコードの基本的な疑問は "悪い習慣ですか?"基本的に私がリーダー機能からデータを読み込み、値既存のTO LIST(いくつかの小道具)を挿入しています私のコードは、このrefリスト関数の混乱
private void TGenerateDriveDetailsFromReader<T>(SqlDataReader returnData, ref List<Systems> systemList)
{
try
{
while (returnData.Read())
{
int MachineID = 0;
MachineID = returnData["MachineID"] is DBNull ? 0 : (int)returnData["MachineID"];
if (systemList.Any(x => x.ID == MachineID))
{
double totalSize = returnData["Size"] is DBNull ? 0 : Convert.ToDouble(returnData["Size"]);
double freeSpace = returnData["FreeSpace"] is DBNull ? 0 : Convert.ToDouble(returnData["FreeSpace"]);
int driveType = returnData["DriveTypeID"] is DBNull ? 0 : (int)(returnData["DriveTypeID"]);
InsertDriveDetailsToList(totalSize, MachineID, freeSpace, driveType, ref systemList);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
private void InsertDriveDetailsToList(double totalSize, int machineID, double freeSpace, int driveTypeID, ref List<Systems> systemList)
{
switch (driveTypeID)
{
case 1: systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveCTotal = totalSize;
systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveCFree = freeSpace;
break;
case 2: systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveDTotal = totalSize;
systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveDFree = freeSpace;
break;
case 3: systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveETotal = totalSize;
systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveEFree = freeSpace;
break;
case 4: systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveFTotal = totalSize;
systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveCFree = freeSpace;
break;
case 5: systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveGTotal = totalSize;
systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveGFree = freeSpace;
break;
case 6: systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveHTotal = totalSize;
systemList.Where(x => x.ID == machineID).FirstOrDefault().DriveHFree = freeSpace;
break;
}
}
のようなものであるので、case文を持つ関数は、しばらくして、すべての時間を実行します私の質問があるループを読みますループを使用してリストを参照しているので、パフォーマンスが低下しますか?アプローチを変更する必要がありますか?ありがとう
あなたのコードが機能していて、コードレビューの量を探しているだけの場合は、[Code Review](https://codereview.stackexchange.com/) –
@TiesonTでこれを尋ねてください。私はまだデバッグしていませんでしたが、私は混乱していますので、私はすでに1回以上審査されているリストを参照しています。 –
なぜここで 'ref'を使用していますか?私はあなたが 'systemList = ...'を実行していないことを知りません。 –