Linq 查询无法反向工作
Linq Query Won't Work In Reverse
我正在使用一个非常简单的结构。
客户进行购买
这些表在 SQL 中是相关的,我可以使用以下方法获得结果:
from p in Purchases
where p.Price > 1000
where p.Customer.Name == "Mary"
select new
{
p.Customer.Name,
p.Description,
p.Price
}
但是,如果我颠倒表的顺序,select 首先从 Customers 开始,则会出现错误。
from c in Customers
where c.Name == "Mary"
where c.Purchases.Price > 1000
select new
{
c.Name,
c.Purchases.Description,
c.Purchases.Price
}
将查询放入 LINQPad 中突出显示 where c.Purchases.Price > 1000
行作为问题,错误消息为:
System.Data.Linq.EntitySet' does not contain a
definition for 'Price' and no extension method 'Price' accepting a
first argument of type
'System.Data.Linq.EntitySet' could be found
(press F4 to add a using directive or assembly reference)
为什么我可以通过 Purchases 获取数据,而不能通过 Customer 获取?
因为c.Purchases
是购买的合集,没有一个Price
属性。
您 可以 将客户加入购买并获得 p.Price > 1000
处的所有结果,但您必须重复导航 属性 隐藏的加入子句:
from c in Customers
join p in Purchases on c.Id equals p.CustoimerId
where c.Name == "Mary" && p.Price > 1000
select new
{
c.Name,
p.Description,
p.Price
}
我正在使用一个非常简单的结构。
客户进行购买
这些表在 SQL 中是相关的,我可以使用以下方法获得结果:
from p in Purchases
where p.Price > 1000
where p.Customer.Name == "Mary"
select new
{
p.Customer.Name,
p.Description,
p.Price
}
但是,如果我颠倒表的顺序,select 首先从 Customers 开始,则会出现错误。
from c in Customers
where c.Name == "Mary"
where c.Purchases.Price > 1000
select new
{
c.Name,
c.Purchases.Description,
c.Purchases.Price
}
将查询放入 LINQPad 中突出显示 where c.Purchases.Price > 1000
行作为问题,错误消息为:
System.Data.Linq.EntitySet' does not contain a definition for 'Price' and no extension method 'Price' accepting a first argument of type 'System.Data.Linq.EntitySet' could be found (press F4 to add a using directive or assembly reference)
为什么我可以通过 Purchases 获取数据,而不能通过 Customer 获取?
因为c.Purchases
是购买的合集,没有一个Price
属性。
您 可以 将客户加入购买并获得 p.Price > 1000
处的所有结果,但您必须重复导航 属性 隐藏的加入子句:
from c in Customers
join p in Purchases on c.Id equals p.CustoimerId
where c.Name == "Mary" && p.Price > 1000
select new
{
c.Name,
p.Description,
p.Price
}