2015-05-05 66 views
1

我有類似與實體ProductCategories加入以下LINQ查詢:除了設置導航屬性選擇所有的LINQ

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導航屬性。這是possibe?或者當我使用導航屬性時,我會一直需要指定一切嗎?

+1

看一看[這裏](http://stackoverflow.com/questions/7861059/select-all-columns-after-join-in-linq),它不是相當重複,但它是一種變化。 – Rawling

+0

所以在我的情況下,我只是選擇新的{p.Id,p.Name,pc.Name},如果我只需要這3個屬性,並且它們都是我的Project對象的一部分? – JTunney

+0

現貨,是啊!只要你不需要'*'你就可以。 – Rawling

回答

2

創建一個匿名的對象,並在另一個屬性下一個屬性和類別名稱來選擇你的產品對象

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

enter image description here

+0

只要CategoryName是屬性,它就會自動映射到我的產品實體? – JTunney

+0

只要您的連接正確,CategoryName和Product就會映射 – mjroodt

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