3

我想這個工作的SQL查詢轉換爲LINQ查詢(EF)不能在轉換後的查詢(普通SQL到LINQ)

訪問表,但在LINQ查詢我不能進入該類別數據表。 這是我工作的SQL查詢:

SELECT cosmetics.brand, cosmetics.product, cosmetics.size, cosmetics.price, cosmetics.sale_type, cosmetics.description, cosmetics.date, cosmetics.company_id, cosmetics.category, cosmetics.[male-female], company.company_site 
FROM cosmetics INNER JOIN company ON cosmetics.company_id = company.company_id 
WHERE (cosmetics.date >= GETDATE()) 
    AND (cosmetics.[male-female] = N'female') 
    AND (cosmetics.category = N'cosmetics_perfumes') 
ORDER BY cosmetics.brand, cosmetics.product, cosmetics.size, cosmetics.price" 

這工作得很好:

var female = (from c in db.cosmetics 
       .Where(v => v.date > DateTime.Now) 
       .Where(d => d.male_female == "female") 
       .Include("company") 
      select c); 
return View(female.ToList()); 
+0

嘗試使用LINQPad,你會發現它在這樣的情況下非常寶貴的。 – Kane 2011-05-23 09:17:23

+0

並找到LINQpad [這裏](http://www.linqpad.net/) – sra 2011-05-23 09:19:47

+0

什麼是「類別數據表」?在你工作的SQL查詢中只有兩個表格:化妝品和公司。它似乎沒有「類別數據表」。 – 2011-05-23 09:22:01

回答

1
var q = 
    from cos in oc.cosmetics 
    join com in oc.company on cos.company_id equals com.company_id 
    where cos.date >= DateTime.Now 
    && cos.male_female == "female" 
    && cos.category == "cosmetics_perfumes" 
    orderby cos.brand, cos.product, cos.size, cos.price 
    select new { cos, com.company_site }; 
+0

謝謝,使用它我得到這個錯誤在我看來:傳入字典的模型項是類型'System.Collections.Generic.List'1 [<> f__AnonymousType1'2 [Sr_D.Models.cosmetic,System。字符串]]',但是這個字典需要一個'System.Collections.Generic.IEnumerable'1 [Sr_D.Models.cosmetic]'類型的模型項。我的觀點是使用這個模型:@model IEnumerable 我在這裏做錯了什麼? (s => s.date> DateTime.Now) 。包括(「公司」) 。在哪裏(s => s.date> DateTime.Now) – ari 2011-05-23 09:29:57

+0

好吧,非常感謝,它看起來像這樣工作:var female = from c in db.cosmetics 。 z => z.category ==「cosmetics_perfumes」)。其中(x => x.male_female ==「female」) select c; – ari 2011-05-23 10:46:43