DataGrid项目来源于使用LINQ的SQL数据库中的加入表 [英] DataGrid itemsSource from Joined Tables in SQL Database using LINQ

查看:135
本文介绍了DataGrid项目来源于使用LINQ的SQL数据库中的加入表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的SQL Server Express数据库中有这些表。

i have these tables in my SQL Server Express database.

我的目标是使用 RelCU 表加入 UserInfo 表,并将结果显示在 wpf DataGrid

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>

谢谢!

推荐答案

您正在使用 LEFT JOIN select j ,所以 j 可以为null:

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>

这篇关于DataGrid项目来源于使用LINQ的SQL数据库中的加入表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆