2011-03-08 95 views
2

I M卡在LINQ查詢,其中I M搜索數據庫&表示使用子查詢中的LINQ to SQL

DBSearchDataContext db = new DBSearchDataContext(); 
     object q = from b in db.Products 
        where b.ProductCode.Contains(val) | 
        b.ProductName.Contains(val) | 
        b.Specification.Contains(val) | 
        b.Description.Contains(val) |      
        b.Category.Contains(val) 
        select b; 

     GridView1.DataSource = q; 
    GridView1.DataBind(); 

我不能從類別表顯示類別名稱,其中的categoryID相匹配的結果。

我這樣做是這樣的SQL

如何在LINQ做這個

SELECT ID, ProductCode, DisplayOrder, ProductName, imgThumb, inStock, Status, Amount, (SELECT Category FROM Category AS aaa WHERE (Products.CategoryID = CategoryID)) AS Category FROM Products ORDER BY ID DESC 

幫我

+0

爲什麼不使用常規的LINQ ** **加入關鍵字?你知道SQL中的連接嗎?你的SQL查詢可以用一個簡單的'INNER JOIN'來改進。如果你的映射是好的,你甚至不需要連接並選擇'b.Category.Name'或其他。 – 2011-03-08 11:26:07

回答

1

如果您缺少一些映射,爲什麼不使用簡單的連接?

var q = from p in db.Products 
     join c in db.Category on p.CategoryID equals c.CategoryID 
     where ... 
     select new 
     { 
      p.ProductCode, 
      ..., 
      c.Category 
     }; 

或適當的映射:

var q = from p in db.Products 
     where ... 
     select new 
     { 
      p.ProductCode, 
      ..., 
      p.Category.Category 
     };