后面的数字是码率 按理说96的应该在最后面 可是现在的排序貌似是按首字母排的System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo("D:\\Avril Lavigne-Tik Tok\\128");
string parameter = "";//存放所有参数
DataTable dt = new DataTable();
dt.Columns.Add("filename");
dt.Columns.Add("bitRate");
foreach (System.IO.FileInfo file in dir.GetFiles())
{
MediaInfo MI = new MediaInfo();
MI.Open("D:\\Avril Lavigne-Tik Tok\\128\\" + file.Name); string bitRate = MI.Get(StreamKind.Audio, 0, "BitRate/String");//视频码率
MI.Close(); DataRow drf = dt.NewRow();
drf["filename"] = file.Name;
drf["bitRate"] = Convert.ToInt32(bitRate.Replace(" Kbps", "").Replace(".0", ""));
//dt.Columns["bitRate"].Expression = "Convert(bitRate, 'System.Int32')";
dt.Rows.Add(drf);
//parameter = parameter + "\r\n" + file.Name.Substring(0, file.Name.LastIndexOf(".")) + ":" + bitRate;
//file.FullName; // 全名
//file.Name; // 文件名
//file.Length; // 文件大小
}
DataView dv = new DataView(dt);
dv.Sort = "bitRate desc";
dataGridView1.DataSource = dv; parameter = dv.Table.ToString(); txtInfo.Text = parameter;
这是代码 我理解应该是bitRate列默认为了字符串类型,但是//dt.Columns["bitRate"].Expression = "Convert(bitRate, 'System.Int32')"; 没法在循环中使用 也没法修改数据库(因为就没有使用数据库)
求大神们给个解决办法DataGridViewDataVIew排序
string parameter = "";//存放所有参数
DataTable dt = new DataTable();
dt.Columns.Add("filename");
dt.Columns.Add("bitRate");
foreach (System.IO.FileInfo file in dir.GetFiles())
{
MediaInfo MI = new MediaInfo();
MI.Open("D:\\Avril Lavigne-Tik Tok\\128\\" + file.Name); string bitRate = MI.Get(StreamKind.Audio, 0, "BitRate/String");//视频码率
MI.Close(); DataRow drf = dt.NewRow();
drf["filename"] = file.Name;
drf["bitRate"] = Convert.ToInt32(bitRate.Replace(" Kbps", "").Replace(".0", ""));
//dt.Columns["bitRate"].Expression = "Convert(bitRate, 'System.Int32')";
dt.Rows.Add(drf);
//parameter = parameter + "\r\n" + file.Name.Substring(0, file.Name.LastIndexOf(".")) + ":" + bitRate;
//file.FullName; // 全名
//file.Name; // 文件名
//file.Length; // 文件大小
}
DataView dv = new DataView(dt);
dv.Sort = "bitRate desc";
dataGridView1.DataSource = dv; parameter = dv.Table.ToString(); txtInfo.Text = parameter;
这是代码 我理解应该是bitRate列默认为了字符串类型,但是//dt.Columns["bitRate"].Expression = "Convert(bitRate, 'System.Int32')"; 没法在循环中使用 也没法修改数据库(因为就没有使用数据库)
求大神们给个解决办法DataGridViewDataVIew排序
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货