두 가지 목록이 있습니다.하나의 목록에서 가장 높은 값을 사용하여 두 번째 목록을 정렬합니다.
나는 목록에서 각 학생 객체의 속성은 이름, 성, 및 요금 []이다이
List<Student> students = new List<Student>();
처럼 만들어 학생들의 목록을 가지고있다.
수수료는 목록의 각 학생에 대한 수수료 집합을 보유하는 배열입니다. 학생들의 목록을
List<double> totals = new List<double>();
I 루프 각각의 비용을 추가
나는이 같은 두 번째 목록을했다. 그런 다음 각 학생의 합계를totals
목록에 추가합니다 (두 번째 목록).
이제 students
목록을 정렬해야하므로 수수료가 가장 많은 총 금액이 처음부터 나와야합니다. 즉, totals
의 최고 값을 사용하여 students
을 정렬해야합니다. 이 같은 totals
에서 가장 높은 값을 얻을 수 있습니다 :
double highestTotalAmountDue = totals.Max();
가 어떻게 가장 높은 수수료 총 학생은 목록의 시작 부분에이되도록 students
목록을 정렬이 highestTotalAmountDue
값을 사용합니까?
그냥 명확히하기 위해 가장 높은 수수료 합계를 가진 학생을 목록 상단에 추가하면됩니다. 나머지는 동일한 순서로 유지 될 수 있습니다.
List<double> totals = new List<double>();
double tempTotal = 0;
Lis<Student> students = new Lis<Student>();
// populate the students list
foreach (var item in students)
{
for (var i = 0; i < resultSet[0].Fees.Length; i++)
{
tempTotal += item.Fees[i].Amount;
}
totals.Add(tempTotal);
tempTotal = 0;
}
double highestTotalAmountDue = totals.Max();
// now what to do to sort the students list by highestTotalAmountDue to put the student with the highest fee due at the top????
이 도와주세요 :
여기에 지금까지 내 코드입니다. 미리 감사드립니다. 내가 바로 그것을 가지고있는 경우에
@OP : 당신은 당신이 사용할 수있는 원본 목록을 주문해야하는 경우 '학생 = orderedStudents.ToList()'. –
@ OP의 이점 :이 솔루션은 익명의 부울 값 함수를 사용합니다. 각 학생의 총 수수료가 이전에 계산 된 합계와 같은지 여부. 목록은 결과에 따라 정렬됩니다. 맨 위를 true로, 맨 아래를 false로 지정합니다. – CSJ
@CSJ : 예, 설명해 주셔서 감사합니다. 이것은'OrderBy' 또는'OrderByDescending'을 사용해야하는 경우를 항상 기억하고 있습니다 :'true'를'1','false'를'0'으로 가정하십시오. –