c#找出最大值

baidu_34817953 2016-05-10 01:53:46
 public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<Work> list = new List<Work>();
private void chart1_Click(object sender, EventArgs e)
{

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
var maxTime = list.Select(w => w.WorkTime).Max();

list.ForEach(w =>
{
w.Efficiency = (decimal)(w.WorkTime / maxTime) * 100;
if()
{
w.Jam = (decimal)100 - w.Efficiency;
w.Wait = 0;
}
else
{
w.Jam = 0;
w.Wait = (decimal)100 - w.Efficiency;
}
});

this.dataGridView1.DataSource = new List<Work>();
this.dataGridView1.DataSource = list;
}

private void button2_Click(object sender, EventArgs e)
{
chart1.Series.Clear();
Series series1 = new Series("有效");
Series series2 = new Series("拥堵");
Series series3 = new Series("等待");
series1.ChartType = SeriesChartType.StackedColumn;
series2.ChartType = SeriesChartType.StackedColumn;
series3.ChartType = SeriesChartType.StackedColumn;
foreach (var x in list)
{
series1.Points.AddY(x.Efficiency);
series2.Points.AddY(x.Jam);
series3.Points.AddY(x.Wait);
}
chart1.ChartAreas[0].AxisY.Maximum = 100;
chart1.Series.Add(series1);
chart1.Series.Add(series2);
chart1.Series.Add(series3);
}

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;
}
}
public class Work
{
public int WorkStation { get; set; }
public double WorkTime { get; set; }
public decimal Efficiency { get; set; }
public decimal Jam { get; set; }
public decimal Wait { get; set; }
}
if处该怎么判断,才能得到是在 Efficiency最大值的前面还是后面。
...全文
595 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-05-10
  • 打赏
  • 举报
回复
var maxTime = list.Select(w => w.WorkTime).Max(); list.ForEach(w => { w.Efficiency = (decimal)(w.WorkTime / maxTime) * 100; if(w.WorkTime < maxTime) { w.Jam = (decimal)100 - w.Efficiency; w.Wait = 0; } else { w.Jam = 0; w.Wait = (decimal)100 - w.Efficiency; } }); 等于最大值的时候怎么处理? 你没说,自己解决吧
baidu_34817953 2016-05-10
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
前面、后面 这2个词是什么意思?
12345是站名,蓝色的是效率,如果某站的效率值在效率最大值的站的前面,那么执行w.Jam = (decimal)100 - w.Efficiency; w.Wait = 0;如果在后面就运行另外一句
baidu_34817953 2016-05-10
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
在 Efficiency最大值的前面还是后面 你的 if 位于计算 Efficiency 的过程中,还没计算完呢,怎么知道最大值在哪?
判断Efficiency的值是否在其最大值的前面还是后面,在前面运行 w.Jam = (decimal)100 - w.Efficiency; w.Wait = 0;在后面则是另外一句,该怎么实现呢
xuzuning 2016-05-10
  • 打赏
  • 举报
回复
在 Efficiency最大值的前面还是后面 你的 if 位于计算 Efficiency 的过程中,还没计算完呢,怎么知道最大值在哪?
Poopaye 2016-05-10
  • 打赏
  • 举报
回复
前面、后面 这2个词是什么意思?

111,125

社区成员

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

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

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