求list中最大值的位置

baidu_34817953 2016-05-10 03:25:35
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的值?
...全文
929 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
list.OrderBy(w=>w.WorkTime).Last().WorkStation
runerback 2016-05-10
  • 打赏
  • 举报
回复

            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;
xuzuning 2016-05-10
  • 打赏
  • 举报
回复
            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());

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧