【发布时间】:2015-12-09 04:08:11
【问题描述】:
我正在尝试根据文件扩展名获取平均文件大小并将其显示在数据网格中。我有这个方法/查询:
public List<FileTypeAverage> getAverageFileSizes(List<DirectoryItem> e)
{
var result = e
.Where(r => r.IsFile == true)
.GroupBy(g => g.File.Extension, r => r.File.Length)
.Select(g => new FileTypeAverage(g.Key, g.Average()));
return result.ToList();
}
我将结果设置为 viewSource.Source,但数据网格中没有显示任何内容。我认为我的查询有问题,因为我是 Linq 的新手,但我似乎无法弄清楚它应该如何完成。我知道我传入的列表不是空的,因为我在将列表传递给方法并尝试显示平均值之前显示了该列表。
编辑: 我这里用的方法:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
System.Windows.Data.CollectionViewSource fileTypeAverageViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("fileTypeAverageViewSource")));
fileTypeAverageViewSource.Source = sorter.getAverageFileSizes(List);
}
}
DirectoryItem 类:
public class DirectoryItem
{
public bool IsFile { get; }
public DirectoryInfoPlus Dir { get; set; }
public FileInfo File { get; }
public FileSystemInfo Either { get { return IsFile ? (File as FileSystemInfo) : (Dir.Dir as FileSystemInfo); } }
public DirectoryItem(DirectoryInfoPlus dir)
{
Dir = dir;
IsFile = false;
}
public DirectoryItem(FileInfo file)
{
File = file;
IsFile = true;
}
}
DirectoryInfoPlus 只是一个 DirectoryInfo 和其中所有文件的组合大小存储在一个 long 中。
【问题讨论】:
-
此方法执行完毕后,
result中的内容是什么?调试!!! -
方法
getAverageFileSizes是否在辅助线程中调用? -
我用的方法设置视图源。我将对其进行编辑以显示这一点。
-
也发布 DirectoryItem 类。
-
我添加了 DirectoryItem 类。
标签: c# wpf linq datagrid average