LinqtoSQL从另一个表中获取值

时间:2017-07-24 09:38:58

标签: c# sql linq

首次使用LinqtoSQL。所以给你们一些上下文:

我有一个名为Inventory的简单SQL Server表,其中包含以下字段

  • InventoryID(int)(自动增量)
  • InventoryItemName(varchar)(255)
  • InventoryCategory(int)

接下来,我有另一个名为InventoryCategories的表,其中包含以下字段:

  • InventoryCategoryID(int)(自动增量)
  • InventoryCategoryName(varchar)(255)
  • InventoryCategoryDe​​scription(varchar)(255)

接下来,目前我有一个组合框,用于选择更新DataGrid.ItemSource的查询,其代码如下所示

    if (searchcategory == "All Stock")
       {
          InventoryDataContext dc = new InventoryDataContext();

          var q =
                  from a in dc.GetTable<Inventory>()
                  select a;

                  SearchResults.ItemsSource = q;
       }

现在,此结果将返回Inventory的Full表,其中包含InventoryID,InventoryItemName和InventoryCategory列。但是,它会在InventoryCategory列中返回InventoryCategory的ID号。

是否有人能够帮助我从此查询中的InventoryCategories表中获取InventoryCategoryName而不是ID?这需要什么?

1 个答案:

答案 0 :(得分:1)

尝试使用左连接:

var qry = from inv in context.Inventory
          from invCategory in context.InventoryCategories.Where(u => inv.InventoryCategory == u.InventoryCategoryID).DefaultIfEmpty()
          select new myViewModel {id = invCategory.InventoryCategoryID, categoryName = invCategory .InventoryCategoryName  }

并且不要忘记使用idcategoryName属性创建myViewModel类