簡體   English   中英

LINQ到實體-限制包含的表

[英]LINQ to Entities - limiting included tables

使用具有一對多關系的兩個表(例如Make-> Model),如何在IQueryable函數中返回帶有有限Model子項的Make?

當我將“ camry”作為變量傳遞時,我想找回只有一個叫做“ camry”的孩子而不是所有孩子的Toyota品牌。 基本上,我想重新創建此SQL語句:

SELECT
    MakeName,
    ModelName
FROM
    Make
    LEFT OUTER JOIN Model ON Model.MakeId = Make.MakeId
WHERE
    Model.ModelName = 'camry'

到目前為止,LINQ語句將如下所示:

return this.ObjectContext.Make
    .Include("Model")
    .Where(make => make.Model.ModelName.Equals("camry")

這顯然在語法上是不正確的,因為Where子句中的.Model是實體集合,並且沒有.ModelName屬性。

您如何限制包含的表格? 在LINQ to Entities中有可能嗎?

請注意,這不在我的腦海中,我也不必費心進行編譯,因此可能會有些問題:

return this.ObjectContext.Make.Include("Model")
    .Where(make => make.Models.Any(model => model.ModelName == "camry"))

另請注意,我認為該品牌將具有“型號”而不是“型號”

編輯:

我沒有正確理解這個問題。 這是您想要的查詢:

return this.ObjectContext.Model.Include("Make")
    .Where(model => model.ModelName == "camry")

這也應該工作:

from make in ctx.Makes
from model in make.Models
where model.Name == "camry"
select new 
{
   Make = make, 
   Model = model
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM