2011-07-23 5 views
0

私は、LINQ、私の検索citeriaは、これまで一つのテーブルに基づいていますが、私は別のテーブルを必要とする特定のciteriaを持っているを使用して、以下の検索方法があります。LINQクエリのヘルプ

方法:

public void search(string s) 
{ 
    var db = new CommerceEntities(); 
    var products = 
     from p in db.Products 
     where (p.ModelName != null && p.ModelName.Contains(s)) 
       || SqlFunctions.StringConvert((double) p.ProductID).Contains(s) 
       || (p.ModelNumber != null && p.ModelNumber.Contains(s)) 
       || (p.Description != null && p.Description.Contains(s)) 
       || SqlFunctions.StringConvert((double) p.CategoryID).Contains(s) 
       || //stuck - See comment below 

/* so far all in 'products' table, but I have one more citeria here that needs 'categories' table. 
Ok, the query in SQL statement will be like this: 

select ProductID, ModelName, ProductImage, Unitcost, products.Categoryid 
from categories 
join products 
on (categories.CategoryID = products.categoryID) 
where categories.categoryname = 'necklace' (replace necklace with my parameter 's') 
order by products.ModelName 

I am not sure how to 'integrate' it with my existing linq query. Please kindly advice. Thanks. 
*/ 
     select new 
     { 
      // Display the items 
      p.ProductID, 
      p.ModelName, 
      p.ProductImage, 
      p.UnitCost, 
      p.CategoryID, 
     }; 

    ListView_Products.DataSourceID = null; 
    ListView_Products.DataSource = products; 
} 
+0

全文検索機能を調べることをお勧めします。 –

答えて

1
var products = from p in db.Products 
      join c in categories on c.CategoryID equals p.categoryID 
      where (/* all you conditions in either tables */) 
      select new 
      { 
       p.ProductID, 
       p.ModelName, 
       p.ProductImage, 
       p.UnitCost, 
       p.CategoryID 
       /* plus what ever you want from categories */ 
      };