我想构建我的linq-to-sql表达式,以便它只生成单个SQL数据库查询。该查询涉及两个嵌套选择,一个简化版本是:构建嵌套的linq-to-sql表达式以生成单个SQL查询
var query = from person in People
where person.ID == 1234
select new PersonDetails()
{
ID = person.ID,
FirstName = person.FirstName,
LastName = person.LastName,
Addresses = from address in Addresses
where address.PersonID == person.ID
select address
PhoneNumbers = from number in PhoneNumbers
where number.PersonID == person.ID
select number
}
该表达式将导致两个SQL查询被执行。第一个加入Person和PhoneNumbers表,并从它们中提取所需的信息。第二个查询是来自Addresses表的简单选择。如果我注释掉电话号码属性,那么只有一个连接人员和地址的查询会被执行,因此L2S引擎确实可以识别这两个关系。
有没有人有任何想法我可以如何构建LINQ表达式,以便linq-to-sql只会生成一个单一的SQL查询?
这似乎是混合查询表达式与扩展方法。有没有什么方法可以用查询表达式来实现呢? – Jacques 2017-02-14 13:06:56