C# LinQ to Entities:用四个表JOIN查询
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/668821/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
LinQ to Entities: Query with four tables JOIN
提问by VansFannel
I have four tables:
我有四个表:
- Client with PK ClientID.
- Destination with PK DestinationID.
- Language with PK LanguageID.
- DestinationDetail with PK DestinationID.
- RL-Client-Destination with PKs ClientID and DestinationID.
The Client may have zero or n Destinations. A destination has n DestinationDetails, each of these DestinationDetail has a language.
客户端可能有零个或 n 个目的地。一个目的地有 n 个 DestinationDetails,每个 DestinationDetail 都有一种语言。
Ok. I need to retrieve all of DestinationDetails for a given client and a given language.
好的。我需要检索给定客户端和给定语言的所有 DestinationDetails。
I start writing this:
我开始写这个:
try
{
ObjectQuery clientes =
guiaContext.Cliente;
ObjectQuery destinos =
guiaContext.Destino;
ObjectQuery idiomas =
guiaContext.Idioma;
ObjectQuery detalles =
guiaContext.DetalleDestino;
IQueryable detalleQuery =
from cliente in clientes
from destino in destinos
from idioma in idiomas
from detalleDestino in detalles
where destino.
select detalleDestino;
}
catch
{
}
}
Any advice?
有什么建议吗?
Thanks!
谢谢!
采纳答案by eglasius
Its along the lines:
它的思路是:
var detalleQuery =
from client in guiaContext.Clients
where client.ID == 1
from destination in cliente.Destinations
from destinationDetail in destination.DestionationDetails
where destinationDetail.Language.Iso2Code == "es"
select destinationDetail;
回答by Jonathan Parker
回答by VansFannel
My answer:
我的答案:
var db = new PracticeEntities();
var destinations = db.DestinationDetails.
Where(dd => dd.Language.Lang == "en-US" &&
dd.Destination.Client.Any(c => c.Email == "[email protected]"));
Thanks!
谢谢!