C# 使用LINQ从SQL数据库中的联接表中获取DataGrid项
我的SQL Server Express数据库中有这些表 我的目标是将“UserInfo”表与“RelCU”表连接起来,并将结果显示在wpf数据网格中 我尝试了这些代码,但在运行项目时出错C# 使用LINQ从SQL数据库中的联接表中获取DataGrid项,c#,wpf,linq,entity-framework,linq-to-entities,C#,Wpf,Linq,Entity Framework,Linq To Entities,我的SQL Server Express数据库中有这些表 我的目标是将“UserInfo”表与“RelCU”表连接起来,并将结果显示在wpf数据网格中 我尝试了这些代码,但在运行项目时出错 IQueryable<RelCU> Query = from u in dbEntities.UserInfoes join m in dbEntities.RelCUs on u.Use
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;
IQueryable Query=来自dbEntities.UserInfoes中的u
在dbEntities.RelCUs中加入m
u.UserID等于m.UserID到temp
来自临时DefaultIfEmpty()中的j
选择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>
<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>
谢谢 您正在使用
LEFT JOIN
,并且选择j
,因此j
可以为空:
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;
IQueryable Query=来自dbEntities.UserInfoes中的u
在dbEntities.RelCUs中加入m
u.UserID等于m.UserID到temp
来自临时DefaultIfEmpty()中的j
选择新的
{
ID=u.UserID,
FirstName=u.FirstName,
LastName=u.LastName,
分数=j==null?0:j.分数,
状态=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=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>
<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>
显示了什么错误?出现了什么错误?您正在使用左连接
,并且选择j
,因此j
可以null
@EdiG.&visgu minhas:我收到了此错误:EntityFramework.dll中发生了类型为“System.NotSupportedException”的未处理异常