Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq查询,用于从2表中获取详细信息并将其放入ObservableCollection C_C#_Wpf_Wpfdatagrid - Fatal编程技术网

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

C# Linq查询,用于从2表中获取详细信息并将其放入ObservableCollection C,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,目前,我正在使用以下代码创建用户集合并绑定到数据网格。很好用 private ObservableCollection<User> users; using (CarStudioDBEntities dt = new CarStudioDBEntities()) { var catList = (from user in dt.Users select user).ToList();

目前,我正在使用以下代码创建用户集合并绑定到数据网格。很好用

  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;
                   });
  }
xaml

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

如果您正在使用LINQ查找数据表的内部联接

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进行绑定

从静态列表创建可观察的集合没有意义。这不会为您提供原始查询的集合更新。
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();