public List<MemberClass> GetVarianceList_BetList(List<MemberClass> betDetail_bo, List<MemberClass> betDetail_v)
{
List<MemberClass> betDetailVarianceList = new List<MemberClass>();
//Comparing quantity for both list
while (betDetail_bo.Count != betDetail_v.Count)
{
if (betDetail_v.Count > betDetail_bo.Count)
betDetail_v = RemoveExtraBetDetail(betDetail_v, betDetail_bo, "Missing Game ID", betDetailVarianceList);
if (betDetail_v.Count < betDetail_bo.Count)
betDetail_bo = RemoveExtraBetDetail(betDetail_bo, betDetail_v, "Extra Game ID", betDetailVarianceList);
}
//Get Not Matched Bet List
#region Get Not Matched Bet List
for (int i = 0; i < betDetail_v.Count; i++)
{
for (int k = 0; k < betDetail_bo.Count; k++)
{
string memberID_v = betDetail_v[i].memberID;
string memberI_bo = betDetail_bo[k].memberID;
string wagerID_v = betDetail_v[i].wagerID.ToUpper();
string wagerID_bo = betDetail_bo[k].wagerID.ToUpper();
if ((memberID_v.Equals(memberI_bo)) && (wagerID_v.Contains(wagerID_bo)))
{
//Arrays - 0: vendor, 1:backOffice
double dblBetAmount = 0, dblWinLoss = 0;
double[] betAmount = { betDetail_v[i].betAmount, betDetail_bo[k].betAmount };
double[] winLoss = { betDetail_v[i].winLoss, betDetail_bo[k].winLoss };
dblBetAmount = Math.Abs(betAmount[0]) - Math.Abs(betAmount[1]);
dblWinLoss = Math.Abs(winLoss[0]) - Math.Abs(winLoss[1]);
if (dblWinLoss != 0 || dblBetAmount != 0)
{
MemberClass betDetail = new MemberClass();
betDetail.dateLabel = betDetail_v[i].dateLabel;
betDetail.brandType = betDetail_v[i].brandType;
betDetail.currency = betDetail_v[i].currency;
betDetail.betAmount = betDetail_v[i].betAmount;
betDetail.winLoss = betDetail_v[i].winLoss;
betDetail.memberID = betDetail_v[i].memberID;
betDetail.varianceType = "Bet Detail Not Matched";
betDetail.gameName = betDetail_v[i].gameName;
betDetail.wagerID = betDetail_v[i].wagerID;
betDetailVarianceList.Add(betDetail);
}
break;
}
}
}
#endregion
return betDetailVarianceList;
}
private List<MemberClass> RemoveExtraBetDetail(List<MemberClass> betDetail1, List<MemberClass> betDetail2, string varianceType, List<MemberClass> betDetailVarianceList)
{
List<MemberClass> VarianceList = new List<MemberClass>(betDetail1);
if (varianceType.Contains("Member ID"))
{
#region Remove Missing or Extra Member ID
//eg: betDetail1 > betDetail2
for (int i = 0; i < betDetail1.Count; i++)
{
bool isFound = false;
for (int k = 0; k < betDetail2.Count; k++)
{
string memberID1 = betDetail1[i].memberID;
string memberID2 = betDetail2[k].memberID;
if (memberID1.ToLower().Equals(memberID2.ToLower()))
{
//Ok, member code found
isFound = true;
break;
}
}
//If member ID not found, add into list
if (isFound == false)
{
MemberClass betDetail = new MemberClass();
betDetail.dateLabel = betDetail1[i].dateLabel;
betDetail.brandType = betDetail1[i].brandType;
betDetail.memberID = betDetail1[i].memberID;
betDetail.currency = betDetail1[i].currency;
betDetail.betAmount = betDetail1[i].betAmount;
betDetail.winLoss = betDetail1[i].winLoss;
betDetail.varianceType = varianceType;
betDetailVarianceList.Add(betDetail);
VarianceList.Remove(betDetail1[i]);
}
}
#endregion
}
else
{
#region Remove MIssing or Extra ReferenceID
//eg: betDetail1 > betDetail2
for (int i = 0; i < betDetail1.Count; i++)
{
bool isFound = false;
for (int k = 0; k < betDetail2.Count; k++)
{
string memberID1 = betDetail1[i].memberID;
string memberID2 = betDetail2[k].memberID;
string wagerID1 = betDetail1[i].wagerID.ToUpper();
string wagerID2 = betDetail2[k].wagerID.ToUpper();
//Notes: vendor site wager length > back office
bool isMatched = false;
isMatched = wagerID1.Contains(wagerID2);
if ((memberID1.Equals(memberID2)) && isMatched)
{
isFound = true;
break;
}
}
if (isFound == false)
{
MemberClass betDetail = new MemberClass();
betDetail.dateLabel = betDetail1[i].dateLabel;
betDetail.brandType = betDetail1[i].brandType;
betDetail.currency = betDetail1[i].currency;
betDetail.betAmount = betDetail1[i].betAmount;
betDetail.winLoss = betDetail1[i].winLoss;
betDetail.memberID = betDetail1[i].memberID;
betDetail.varianceType = varianceType;
betDetail.wagerID = betDetail1[i].wagerID;
betDetailVarianceList.Add(betDetail);
VarianceList.Remove(betDetail1[i]);
}
}
#endregion
}
return VarianceList;
}
}
}
The problem is in the BOLD part, when the code finish the RemoveExtraBetDetail function part, it will go to the while function there, but it just run non-stop, suppose it have to stop after comparing the value, can anypne tell me what is the problem?
suppose it have to stop after comparing the value,
No, unless the condition evaluates to true. In your case, the condition does not evaluates to true because everytime you are removing the items from the
list you've initiated inside the method. This is what I'm talking about
So, whatever list you are passing to the method won't actually remove the list from the original list. Instead of initiating a new list, try by removing from the lists you are passing to the method.
JYHanz
Member
10 Points
49 Posts
c#
Dec 18, 2012 06:27 AM|LINK
public List<MemberClass> GetVarianceList_BetList(List<MemberClass> betDetail_bo, List<MemberClass> betDetail_v) { List<MemberClass> betDetailVarianceList = new List<MemberClass>(); //Comparing quantity for both list while (betDetail_bo.Count != betDetail_v.Count) { if (betDetail_v.Count > betDetail_bo.Count) betDetail_v = RemoveExtraBetDetail(betDetail_v, betDetail_bo, "Missing Game ID", betDetailVarianceList); if (betDetail_v.Count < betDetail_bo.Count) betDetail_bo = RemoveExtraBetDetail(betDetail_bo, betDetail_v, "Extra Game ID", betDetailVarianceList); } //Get Not Matched Bet List #region Get Not Matched Bet List for (int i = 0; i < betDetail_v.Count; i++) { for (int k = 0; k < betDetail_bo.Count; k++) { string memberID_v = betDetail_v[i].memberID; string memberI_bo = betDetail_bo[k].memberID; string wagerID_v = betDetail_v[i].wagerID.ToUpper(); string wagerID_bo = betDetail_bo[k].wagerID.ToUpper(); if ((memberID_v.Equals(memberI_bo)) && (wagerID_v.Contains(wagerID_bo))) { //Arrays - 0: vendor, 1:backOffice double dblBetAmount = 0, dblWinLoss = 0; double[] betAmount = { betDetail_v[i].betAmount, betDetail_bo[k].betAmount }; double[] winLoss = { betDetail_v[i].winLoss, betDetail_bo[k].winLoss }; dblBetAmount = Math.Abs(betAmount[0]) - Math.Abs(betAmount[1]); dblWinLoss = Math.Abs(winLoss[0]) - Math.Abs(winLoss[1]); if (dblWinLoss != 0 || dblBetAmount != 0) { MemberClass betDetail = new MemberClass(); betDetail.dateLabel = betDetail_v[i].dateLabel; betDetail.brandType = betDetail_v[i].brandType; betDetail.currency = betDetail_v[i].currency; betDetail.betAmount = betDetail_v[i].betAmount; betDetail.winLoss = betDetail_v[i].winLoss; betDetail.memberID = betDetail_v[i].memberID; betDetail.varianceType = "Bet Detail Not Matched"; betDetail.gameName = betDetail_v[i].gameName; betDetail.wagerID = betDetail_v[i].wagerID; betDetailVarianceList.Add(betDetail); } break; } } } #endregion return betDetailVarianceList; } private List<MemberClass> RemoveExtraBetDetail(List<MemberClass> betDetail1, List<MemberClass> betDetail2, string varianceType, List<MemberClass> betDetailVarianceList) { List<MemberClass> VarianceList = new List<MemberClass>(betDetail1); if (varianceType.Contains("Member ID")) { #region Remove Missing or Extra Member ID //eg: betDetail1 > betDetail2 for (int i = 0; i < betDetail1.Count; i++) { bool isFound = false; for (int k = 0; k < betDetail2.Count; k++) { string memberID1 = betDetail1[i].memberID; string memberID2 = betDetail2[k].memberID; if (memberID1.ToLower().Equals(memberID2.ToLower())) { //Ok, member code found isFound = true; break; } } //If member ID not found, add into list if (isFound == false) { MemberClass betDetail = new MemberClass(); betDetail.dateLabel = betDetail1[i].dateLabel; betDetail.brandType = betDetail1[i].brandType; betDetail.memberID = betDetail1[i].memberID; betDetail.currency = betDetail1[i].currency; betDetail.betAmount = betDetail1[i].betAmount; betDetail.winLoss = betDetail1[i].winLoss; betDetail.varianceType = varianceType; betDetailVarianceList.Add(betDetail); VarianceList.Remove(betDetail1[i]); } } #endregion } else { #region Remove MIssing or Extra ReferenceID //eg: betDetail1 > betDetail2 for (int i = 0; i < betDetail1.Count; i++) { bool isFound = false; for (int k = 0; k < betDetail2.Count; k++) { string memberID1 = betDetail1[i].memberID; string memberID2 = betDetail2[k].memberID; string wagerID1 = betDetail1[i].wagerID.ToUpper(); string wagerID2 = betDetail2[k].wagerID.ToUpper(); //Notes: vendor site wager length > back office bool isMatched = false; isMatched = wagerID1.Contains(wagerID2); if ((memberID1.Equals(memberID2)) && isMatched) { isFound = true; break; } } if (isFound == false) { MemberClass betDetail = new MemberClass(); betDetail.dateLabel = betDetail1[i].dateLabel; betDetail.brandType = betDetail1[i].brandType; betDetail.currency = betDetail1[i].currency; betDetail.betAmount = betDetail1[i].betAmount; betDetail.winLoss = betDetail1[i].winLoss; betDetail.memberID = betDetail1[i].memberID; betDetail.varianceType = varianceType; betDetail.wagerID = betDetail1[i].wagerID; betDetailVarianceList.Add(betDetail); VarianceList.Remove(betDetail1[i]); } } #endregion } return VarianceList; } } }The problem is in the BOLD part, when the code finish the RemoveExtraBetDetail function part, it will go to the while function there, but it just run non-stop, suppose it have to stop after comparing the value, can anypne tell me what is the problem?
amskate
Member
41 Points
11 Posts
Re: c#
Dec 18, 2012 06:39 AM|LINK
Hi
I think the problem is in the condition given for while statement.
just check for count values whether they are getting equals at some point of time.
Ruchira
All-Star
43040 Points
7032 Posts
MVP
Re: c#
Dec 19, 2012 08:27 AM|LINK
Hello,
No, unless the condition evaluates to true. In your case, the condition does not evaluates to true because everytime you are removing the items from the list you've initiated inside the method. This is what I'm talking about
So, whatever list you are passing to the method won't actually remove the list from the original list. Instead of initiating a new list, try by removing from the lists you are passing to the method.
My Tech blog | My YouTube ChannelPlease 'Mark as Answer' if this post helps you.JYHanz
Member
10 Points
49 Posts
Re: c#
Dec 19, 2012 08:37 AM|LINK
how can i remove it from the lists?