除了在linq中选择all之外,还要设置导航属性

时间:2015-05-05 14:49:46

标签: c# linq entity-framework

我有一个类似于以下的linq查询,它与实体ProductCategories连接:

var list = from p in db.Products
           join pc in db.ProductCategories on p.ProductCategoryId equals pc.Id
           select new Product()
           {
              Id = p.Id, Name = p.Name, CategoryName = pc.Name
           };

假设我想选择p。*并另外设置ProductCategories的CategoryName导航属性。这可能吗?或者,在使用导航属性时,我是否总是必须指定所有内容?

2 个答案:

答案 0 :(得分:2)

创建一个匿名对象,并在一个属性下选择您的产品对象,在另一个属性下选择类别名称

select new 
       {
          Product = p, Name = p.Name, CategoryName = pc.Name
       };

enter image description here

答案 1 :(得分:0)

如果您需要整个内容,并且您的导航属性设置正确(请确保您的文件顶部有using System.Data.Entity;),以下内容也可以正常运行:

var list = db.Products.Include(p=>p.ProductCategories);

或更简单的匿名类:

var list = db.Products.Select(p=>new { 
    p.Id,
    p.Description,
    ProductCategoryName=p.ProductCategories.Name});