0

我正在尝试连接两个列表并获得一个新的匿名列表,然后将其绑定到 silverlight 中的网格以用于应用程序:

        var lst = 
            from games in AppLogic.CurrentApp.GAMES.Entities
            from playedGames in AppLogic.CurrentApp.PLAYEDGAMES.Entities.Where(f => f.GameID == games.ID).DefaultIfEmpty()
            select new
            {
                ID = games.ID,
                Date = games.Date,
                MaxPoints = games.MaxPoints
            };

        dgGames.ItemsSource = lst;

但我总是得到一个空引用异常。我在另一个 stackoverflow 线程中看到了这种语法(遗憾的是我没有标记 url),但它似乎并没有以这种方式工作。我是在做一些根本错误的事情,还是不能像这样绑定新列表?

绑定是这样的:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <data:DataGrid x:Name="dgGames">
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Visibility="Collapsed" Binding="{Binding ID}" />
                <data:DataGridTextColumn Header="Datum" Binding="{Binding Date}" />
                <data:DataGridTextColumn Header="Punkte" Binding="{Binding MaxPoints}" />
                <!--<data:DataGridTextColumn Header="Gewinner" Binding="{Binding Winner}" />-->
            </data:DataGrid.Columns>
        </data:DataGrid>
    </Grid>

PS:如您所见,我什至没有从左侧加入“PlayedGames”获取数据,但它似乎仍然无法正常工作。

如果有什么愚蠢的错误,请提前道歉。我从找到的一些示例中修改了代码,因此我无法确定它们是否有效。

非常感谢所有的答案!

马蒂亚斯

4

1 回答 1

1

尝试以这种方式重写您的左连接。

var lst = from games in AppLogic.CurrentApp.GAMES.Entities
    join playedGames in AppLogic.CurrentApp.PLAYEDGAMES.Entities
    on game.ID equals games.GameID into JoinedGames
    from subGames in JoinedGames.DefaultIfEmpty()
    select new                          
    {
       ID = games.ID,
       Date = games.Date,
       MaxPoints = games.MaxPoints                      
    };

dgGames.ItemsSource = lst.ToList();
于 2013-09-23T21:08:10.440 回答