DataGrid itemsSource from Joined Tables in SQL Database using LINQ

折月煮酒 提交于 2019-12-25 11:05:40

问题


i have these tables in my SQL Server Express database.

my aim is to join "UserInfo" table with "RelCU" table and display the result in a wpf DataGrid.

i tried these codes but got an error while running the project.

IQueryable<RelCU> Query =  from u in dbEntities.UserInfoes
                           join m in dbEntities.RelCUs
                           on u.UserID equals m.UserID into temp
                           from j in temp.DefaultIfEmpty()
                           select j;
DataGridRegisteredUsers.ItemsSource = Query;

XAML:

  <DataGrid x:Name="DataGridRegisteredUsers" IsReadOnly="True" AutoGenerateColumns="False" HorizontalContentAlignment="Stretch" Margin="0,0,-1,-1"
                                  FlowDirection="RightToLeft" Opacity="0.9" FontFamily="B Nazanin" FontSize="15">
                            <DataGrid.Columns>
                                <DataGridTextColumn Binding="{Binding Path=UserInfoes.UserID}" IsReadOnly="True"
                                                    Header="ID" />
                                <DataGridTextColumn Binding="{Binding Path=UserInfoes.FirstName}"
                                                    Header="First Name" />
                                <DataGridTextColumn Binding="{Binding Path=UserInfoes.LastName}"
                                                    Header="Last Name" />
                                <DataGridTextColumn Binding="{Binding Path=RelCUs.Score}"
                                                    Header="Score" />
                                <DataGridTextColumn Binding="{Binding Path=RelCUs.Status}"
                                                    Header="Status" />

                            </DataGrid.Columns>
                        </DataGrid>

thanks!


回答1:


You are using LEFT JOIN, and select j, so j can be null :

  IQueryable<RelCU> Query = from u in dbEntities.UserInfoes
                            join m in dbEntities.RelCUs
                            on u.UserID equals m.UserID into temp
                            from j in temp.DefaultIfEmpty()
                            select new
                            {
                                ID=u.UserID, 
                                FirstName=u.FirstName,
                                LastName=u.LastName,
                                Score = j == null? 0 : j.Score,
                                Status = j == null? "" :j.Status
                            };
  DataGridRegisteredUsers.ItemsSource = Query;

XAML:

 <DataGrid x:Name="DataGridRegisteredUsers" IsReadOnly="True" AutoGenerateColumns="False" HorizontalContentAlignment="Stretch" Margin="0,0,-1,-1"
                              FlowDirection="RightToLeft" Opacity="0.9" FontFamily="B Nazanin" FontSize="15">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding Path=ID}" IsReadOnly="True"
                                                Header="ID" />
                            <DataGridTextColumn Binding="{Binding Path=FirstName}"
                                                Header="First Name" />
                            <DataGridTextColumn Binding="{Binding Path=LastName}"
                                                Header="Last Name" />
                            <DataGridTextColumn Binding="{Binding Path=Score}"
                                                Header="Score" />
                            <DataGridTextColumn Binding="{Binding Path=Status}"
                                                Header="Status" />

                        </DataGrid.Columns>
                    </DataGrid>


来源:https://stackoverflow.com/questions/25601114/datagrid-itemssource-from-joined-tables-in-sql-database-using-linq

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!