110,535
社区成员
发帖
与我相关
我的任务
分享
List<Work> list = new List<Work>();
private void Form1_Load(object sender, EventArgs e)
{
list.AddRange(new Work[] {
new Work() { WorkStation = 1, WorkTime = 12 },
new Work() { WorkStation = 2, WorkTime = 15 },
new Work() { WorkStation = 3, WorkTime = 17 },
new Work() { WorkStation = 4, WorkTime = 13 },
new Work() { WorkStation = 5, WorkTime = 11 },
});
this.dataGridView1.DataSource = list;
}
for (int i = 0; i < list.Count - 1;i++)然后该怎么求list中worktime最大值对应的workstation的值?list.OrderBy(w=>w.WorkTime).Last().WorkStation
int maxValue = 0;
int index = 0;
for (int i = 0; i < list.Count - 1; i++)
{
if (list[i].WorkTime > maxValue)
{
maxValue = list[i].WorkTime;
index = i;
}
}
int maxStation = list[index].WorkStation;
用linq
思路是先找worktime最大值,再找worktime等于这个值的work,再取其workstation
int maxWorkTime = list.Max(work => work.WorkTime);
int maxStation = list.First(work => work.WorkTime == maxWorkTime).WorkStation;
var maxTime = list.Select(w => w.WorkTime).Max();
var n = list.FindIndex(x => x.WorkTime == maxTime);
MessageBox.Show(list[n].WorkStation.ToString());
用循环
var maxTime = list.Select(w => w.WorkTime).Max();
for(int i = 0; i < list.Count; i++) {
if(list[i].WorkTime == maxTime) break;
}
MessageBox.Show(list[i].WorkStation.ToString());