0
任何人都可以幫我解決這個問題。有三臺服務器。我想將作業分配給至少有Notstarted作業的服務器。我們想考慮已經開始的工作,而不是開始工作。我已經實現了這一點。但我的代碼非常冗長。我不知道如何在不改變我的概念的情況下最小化我的代碼。這裏是我的代碼:如何在不改變概念的情況下縮短我的代碼長度?
public List<int> GetPaServer()
{
List<int> PaServers = new List<int>();
using (PaEntities pa = new PaEntities())
{
var PaServer = from server in pa.AppPM_Pa_Server
where server.IsActive == true
select server.ServerId;
foreach (var paServer in PaServer)
{
PaServers.Add(paServer);
}
}
return PaServers;
}
//Method to get the serverid for each request.
public int GetPaQueue()
{
using (PaEntities server = new PaEntities())
{
List<int> Paserver = new List<int>();
Paserver = GetPaServer();
string server1 = string.Empty;
string server2 = string.Empty;
string server3 = string.Empty;
foreach (int paserver in Paserver)
{
if (paserver == 1)
{
server1 = "active";
}
else if (paserver == 2)
{
server2 = "active";
}
else if (paserver == 3)
{
server3 = "active";
}
}
int retVal = 0;
// Get the Server NotStarted details here
var NotStarted1 = (from serverID in server.AppPM_Pat
where serverID.Status == "NotStarted" && serverID.ServerId == 1
select serverID.ServerId).Count();
var NotStarted2 = (from serverID in server.AppPM_Pat
where serverID.Status == "NotStarted" && serverID.ServerId == 2
select serverID.ServerId).Count();
var NotStarted3 = (from serverID in server.AppPM_Pat
where serverID.Status == "NotStarted" && serverID.ServerId == 3
select serverID.ServerId).Count();
// Get the Server Started details here
var server_Started1 = (from serverID in server.AppPM_Pat
where serverID.Status == "Started" && serverID.ServerId == 1
select serverID.ServerId).Count();
var server_Started2 = (from serverID in server.AppPM_Pat
where serverID.Status == "Started" && serverID.ServerId == 2
select serverID.ServerId).Count();
var server_Started3 = (from serverID in server.AppPM_Pat
where serverID.Status == "Started" && serverID.ServerId == 3
select serverID.ServerId).Count();
//Get the server number for each request
//control comes here only when the server is active
if (server1 == "active" && server2 == "active" && server3 == "active")
{
if (NotStarted1 == 0 && NotStarted2 == 0 && NotStarted3 == 0)
{
if ((server_Started1 > server_Started2) && (server_Started1 > server_Started3))
{
retVal = 2;
}
else if (server_Started1 == 0 && server_Started2 == 0 && server_Started3 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 1;
}
else if ((server_Started2 > server_Started1) && (server_Started2 > server_Started3))
{
retVal = 1;
}
else if ((server_Started3 > server_Started1) && (server_Started3 > server_Started2))
{
retVal = 1;
}
else if (server_Started1 == server_Started2 && server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == server_Started3 && server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started2 == server_Started3 && server_Started1 == 0)
{
retVal = 1;
}
}
//control comes here only when the third server is active after some time
else if (NotStarted1 == NotStarted2 && NotStarted3 == 0)
{
if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 3;
}
}
else if ((NotStarted1 > NotStarted2) && NotStarted3 == 0)
{
if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 3;
}
}
else if ((NotStarted2 > NotStarted1) && NotStarted3 == 0)
{
if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 3;
}
}
//control comes here only when the first server is active after some time
else if (NotStarted2 == NotStarted3 && NotStarted1 == 0)
{
if (server_Started3 == 1 & server_Started2 == 1 & server_Started1 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 1;
}
}
else if ((NotStarted2 > NotStarted3) && NotStarted1 == 0)
{
if (server_Started3 == 1 & server_Started2 == 1 & server_Started1 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 1;
}
}
else if ((NotStarted3 > NotStarted2) && NotStarted1 == 0)
{
if (server_Started3 == 1 & server_Started2 == 1 & server_Started1 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 1;
}
}
//control comes here only when the second server is active after some time
else if (NotStarted3 == NotStarted1 && NotStarted2 == 0)
{
if (server_Started3 == 1 & server_Started1 == 1 & server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 2;
}
}
else if ((NotStarted3 > NotStarted1) && NotStarted2 == 0)
{
if (server_Started3 == 1 & server_Started1 == 1 & server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 2;
}
}
else if ((NotStarted1 > NotStarted3) && NotStarted2 == 0)
{
if (server_Started3 == 1 & server_Started1 == 1 & server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started1 == 1 & server_Started2 == 1 & server_Started3 == 1)
{
retVal = 2;
}
}
else if (NotStarted1 == 1 && NotStarted2 == 0 && NotStarted3 == 0)
{
if ((server_Started1 > server_Started2) && (server_Started1 > server_Started3))
{
retVal = 2;
}
else if (server_Started1 == 0 && server_Started2 == 0 && server_Started3 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 1;
}
else if ((server_Started2 > server_Started1) && (server_Started2 > server_Started3))
{
retVal = 1;
}
else if ((server_Started3 > server_Started1) && (server_Started3 > server_Started2))
{
retVal = 1;
}
else if (server_Started1 == server_Started2 && server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == server_Started3 && server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started2 == server_Started3 && server_Started1 == 0)
{
retVal = 1;
}
}
else if (NotStarted1 == 1 && NotStarted2 == 1 && NotStarted3 == 0)
{
if ((server_Started1 > server_Started2) && (server_Started1 > server_Started3))
{
retVal = 2;
}
else if (server_Started1 == 0 && server_Started2 == 0 && server_Started3 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 1;
}
else if ((server_Started2 > server_Started1) && (server_Started2 > server_Started3))
{
retVal = 1;
}
else if ((server_Started3 > server_Started1) && (server_Started3 > server_Started2))
{
retVal = 1;
}
else if (server_Started1 == server_Started2 && server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == server_Started3 && server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started2 == server_Started3 && server_Started1 == 0)
{
retVal = 1;
}
}
else if (NotStarted1 > NotStarted2 && NotStarted1 > NotStarted3)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
if (NotStarted2 > NotStarted3)
{
retVal = 3;
}
else
{
retVal = 2;
}
}
}
else if (NotStarted2 > NotStarted3 && NotStarted2 > NotStarted1)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
if (NotStarted1 > NotStarted3)
{
retVal = 3;
}
else
{
retVal = 1;
}
}
}
else if (NotStarted3 > NotStarted1 && NotStarted3 > NotStarted2)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
if (NotStarted1 > NotStarted2)
{
retVal = 2;
}
else
{
retVal = 1;
}
}
}
else if (NotStarted1 == NotStarted2 && NotStarted2 == NotStarted3 && NotStarted1 == NotStarted3)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 1;
}
}
else if (NotStarted1 == NotStarted2 && NotStarted1 > NotStarted3 && NotStarted2 > NotStarted3)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 3;
}
}
else if (NotStarted2 == NotStarted3 && NotStarted2 > NotStarted1 && NotStarted3 > NotStarted1)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 1;
}
}
else if (NotStarted1 == NotStarted3 && NotStarted1 > NotStarted2 && NotStarted3 > NotStarted2)
{
if (server_Started1 == 1 && server_Started2 == 1 && server_Started3 == 1)
{
retVal = 2;
}
}
}
//control comes here only when server1 and server2 is active
else if (server1 == "active" && server2 == "active")
{
if (NotStarted1 > NotStarted2)
{
if (server_Started1 == 1 && server_Started2 == 1)
{
retVal = 2;
}
}
else if (NotStarted1 == NotStarted2)
{
if (server_Started1 == 0 && server_Started2 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started2 == 0)
{
retVal = 2;
}
else if (server_Started1 == 0 && server_Started2 == 1)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started2 == 1)
{
retVal = 1;
}
}
else
{
if (server_Started1 == 1 && server_Started2 == 1)
{
retVal = 1;
}
}
}
//control comes here only when server3 and server2 is active
else if (server2 == "active" && server3 == "active")
{
if (NotStarted2 > NotStarted3)
{
if (server_Started2 == 1 && server_Started3 == 1)
{
retVal = 3;
}
}
else if (NotStarted2 == NotStarted3)
{
if (server_Started2 == 0 && server_Started3 == 0)
{
retVal = 2;
}
else if (server_Started2 == 1 && server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started2 == 0 && server_Started3 == 1)
{
retVal = 2;
}
else if (server_Started2 == 1 && server_Started3 == 1)
{
retVal = 2;
}
}
else
{
if (server_Started2 == 1 && server_Started3 == 1)
{
retVal = 2;
}
}
}
//control comes here only when server1 and server3 is active
else if (server1 == "active" && server3 == "active")
{
if (NotStarted1 > NotStarted3)
{
if (server_Started1 == 1 && server_Started3 == 1)
{
retVal = 3;
}
}
else if (NotStarted1 == NotStarted3)
{
if (server_Started1 == 0 && server_Started3 == 0)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started3 == 0)
{
retVal = 3;
}
else if (server_Started1 == 0 && server_Started3 == 1)
{
retVal = 1;
}
else if (server_Started1 == 1 && server_Started3 == 1)
{
retVal = 1;
}
}
else
{
if (server_Started1 == 1 && server_Started3 == 1)
{
retVal = 1;
}
}
}
return retVal;
}
}
我不明白你的意思。你可以請給一些更多的細節 – Karthi
我會跳過這一點,只是指向一個很好的codereview答案:http://codereview.stackexchange.com/questions/15975/how-to-reduce-my-code-length-without - 改變概念 – lbruder