我正在尝试使用LINQ查询生成的匿名类型填充DataGrid
。当我将查询结果放在列表框中时,它看起来很好。但是,当我将查询结果放入数据网格时,会生成正确的行数,但单元格为空。
(数据网格位于左侧,右侧是列表框。)
分配数据源:
testListBox.ItemsSource = debtPerUser.ItemsSource = ExpenseViewModel.getDebtData(username);
XAML:
<sdk:DataGrid Height="222" HorizontalAlignment="Left" Margin="31,89,0,0" Name="debtPerUser" VerticalAlignment="Top" Width="516" AutoGenerateColumns="True" />
<ListBox Height="222" HorizontalAlignment="Left" Margin="567,89,0,0" Name="testListBox" VerticalAlignment="Top" Width="173" />
我在这里做错了什么?
getDebtData:
internal static IEnumerable getDebtData(string username)
{
IEnumerable<String> users = getUsersInvolving(username);
var debt = from user in users
select new {
User = user,
Net = owedBetween(username, user) - owedBetween(user, username)
};
return debt.Where(d => d.Net != 0);
}
更新:当我不使用匿名查询类型时,它可以正常工作。也许这就是问题?
答案 0 :(得分:2)
是的,匿名类型被设计用于它们声明的方法。将它们暴露在外可能会导致恶果。在这种情况下,我会使用强类型的枚举。
答案 1 :(得分:0)
如果不知道方法ExpenseViewModel.getDebtData
返回什么类型的集合,如果它正在使用LINQ,那么您可能会尝试ExpenseViewModel.getDebtData(username).ToList()