繁体   English   中英

Linq查询从2表获取详细信息并将其放入ObservableCollection C#

[英]Linq Query for getting details from 2 table and putting into ObservableCollection C#

目前,我正在使用以下代码创建用户集合并将其绑定到数据网格。 工作正常。

  private ObservableCollection<User> users; 

  using (CarStudioDBEntities dt = new CarStudioDBEntities())
  {
    var catList = (from user in dt.Users
                   select user).ToList();
                   users = new ObservableCollection<User>(catList);
                   this.Dispatcher.Invoke(() =>
                   {
                       lstUsers.ItemsSource = users;
                   });
  }

a

<DataGrid x:Name="lstUsers"  Background="White"  Margin="0" AutoGenerateColumns="False" IsReadOnly="True">
     <DataGrid.Columns>
          <DataGridTemplateColumn Width="80"> 
                <DataGridTemplateColumn.CellTemplate>
                       <DataTemplate>
                             <Button Name="viewUserDetailsBtn" Content="View" Click="viewUserDetailsBtn_Click" Background="#FF3F5164" BorderBrush="Black" FontSize="10" Height="24" Padding="0" Margin="0" />
                        </DataTemplate>
                 </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>
         <DataGridTextColumn Header="Username" Width="*" Binding="{Binding Username}"/>
   <DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name}"/>
   <DataGridTextColumn Header="Role" Width="*" Binding="{Binding Role}"/>
   <DataGridTextColumn Header="Contact Number" Width="*" Binding="{Binding ContactNo}" />
                            <DataGridTextColumn Header="Status" Width="*" Binding="{Binding Status}" />
                        </DataGrid.Columns>
  </DataGrid>

问题是我需要创建另一个ObservableCollection部分; 其中包含对类别表的外键引用。 现在,我需要通过零件中存在的categoryId获取类别表中的类别名称,最后将具有类别名称的零件详细信息绑定到数据网格。 我不能为此编写适当的linq查询。 简而言之,我需要带有零件和类别详细信息的ObservableCollection。

如果要使用LINQ在DataTables上查找内部联接。

var result = from dataRows1 in table1.AsEnumerable()
             join dataRows2 in table2.AsEnumerable()
             on dataRows1.Field<string>("ID") equals dataRows2.Field<string>("ID")

             select dtResult.LoadDataRow(new object[]
             {
                dataRows1.Field<string>("ID"),
                dataRows1.Field<string>("name"),
                dataRows2.Field<int>("<other fields you want>"),
              }, false);
result.CopyToDataTable();

之后,您可以使用新的DataTable进行绑定

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM