尝试操纵以下数据表中的数据,以便我计算平均值。
我想在PktsRecieved(XAxis)和PktsRecieved(YAxis)中添加所有数据并计算平均值
我应该使用Linq查询还是最好的方法
由于
List<string[]> rows = File.ReadAllLines(@"E:\\Final Year\\Uni\\NoCAnalysisTool2\\rx.csv")
.Select(x => x.Split(','))
.ToList();
DataTable dt = new DataTable();
dt.Columns.Add("Source|Destination");
dt.Columns.Add("PktsRecieved(XAxis)");
dt.Columns.Add(" ");
dt.Columns.Add("Source|Destination ");
dt.Columns.Add("PktsRecieved(YAxis)");
dt.Columns.Add("");
dt.Columns.Add("");
dt.Columns.Add("");
rows.ForEach(x => { dt.Rows.Add(x); });
dataGridView2.DataSource = dt;
答案 0 :(得分:0)
好吧,如果我正确地阅读它,你最大的问题可能是数据是字符串。在我的头顶,我建议这样的事情:
double averageXAxis = rows.Average( (r) => double.Parse(r[1]) );
(请原谅我,如果语法不完全正确 - 我现在正在没有VS的情况下徒手打字。)
但就像我说的那样,你可能会遇到一个问题,你的数据在技术上是来自.CSV的字符串格式 - 这意味着技术上可能有任何东西 - 数字,字母,奇怪的非ascii字符等您可能必须添加其他LINQ语句以将其缩小到仅列中具有可解析值的行。您可能不希望以单个空白/流氓值导致整个代码异常的方式对其进行编码。
编辑:如果您需要对DataTable进行操作而无法访问该行对象?您可以使用AsEnumerable()函数在DataTable上获取行枚举,并使用.Average执行相同类型的LINQ技巧(...)