C# 作为LINQ GroupBy的一部分,如何将DataGrid列绑定到匿名类型中的属性?
我有一个WPF项目,其中包含一个DataGrid。这是网格:C# 作为LINQ GroupBy的一部分,如何将DataGrid列绑定到匿名类型中的属性?,c#,wpf,linq,datagrid,C#,Wpf,Linq,Datagrid,我有一个WPF项目,其中包含一个DataGrid。这是网格: <DataGrid Name="dgMyGrid" AutoGenerateColumns="False" Height="120"> <DataGrid.Columns> <DataGridTextColumn Header="File Name" Binding="{Binding source}" /> <DataGridTextColumn He
<DataGrid Name="dgMyGrid" AutoGenerateColumns="False" Height="120">
<DataGrid.Columns>
<DataGridTextColumn Header="File Name" Binding="{Binding source}" />
<DataGridTextColumn Header="Count" Binding="{Binding count}" />
</DataGrid.Columns>
</DataGrid>
当我尝试绑定到匿名类型中的属性时,datagrid为空。但是,我似乎确实能够绑定到ListFailures中类型的属性,例如sourceFile。不幸的是,匿名类型的全部目的是尝试给我一种绑定count属性的方法
那么如何绑定匿名类型中的属性,主要是“源”和“计数”?因为您使用了
GroupBy
,fileList
是一个Group
对象序列,而不是匿名类型序列。由于您是按匿名对象分组的,因此这将位于组的键属性中。这就是GroupBy
所做的:选择器lambda返回一个键,GroupBy
返回/产生/任何Group
对象的序列,表示由选择器提供的任何键集分组的原始序列
<DataGridTextColumn Header="File Name" Binding="{Binding Key.source}" />
<DataGridTextColumn Header="Count" Binding="{Binding Key.count}" />
这将产生以下两组的序列:
Group.Key == false
((IEnumerable)Group) == [1, 3, 5]
Group.Key == true
((IEnumerable)Group) == [2, 4, 6]
谢谢完全忘记了我需要“关键字”这个词!
var evenOdd = Enumerable.Range(1, 6)
.GroupBy(y => (y & 1) == 0)
;
Group.Key == false
((IEnumerable)Group) == [1, 3, 5]
Group.Key == true
((IEnumerable)Group) == [2, 4, 6]