我有一个D
对象,该对象由D
表的自动映射创建。我在分部类中为它添加了以下属性。Linq在一个语句中工作,但没有在属性中选择
public Address PhysicalAddress
{
get { return this.Addresses.FirstOrDefault(a => a.AddrType == "PHY"); }
}
这对自己的工作很好。
我想写上以下LINQ查询:
var result = from d in _db.D
where d.PhysicalAddress.State == addr.State
select d;
不工作。当我尝试遍历result
时,它会抛出一个NotSupportedException
。
但是,下列情况工作:
var result = from d in _db.D
where d.Addresses.Single(dAddr => dAddr.AddrType == "PHY").State == addr.State
select d;
为什么LINQ到SQL工作这种方式?有没有办法重新编写我的财产,以便它的工作?
我相信我会在属性做到这一点? – 2010-03-03 01:16:42
没有不在属性中,你这样做会取代你的查询。 to列表将IQueryable转换为List,从而列举它 - 说为它执行SQL。然后通过where子句筛选返回的结果。 – AxelEckenberger 2010-03-03 07:40:35
这是一个非常危险的建议。你无条件地将整张桌子放在记忆中! – jeroenh 2010-03-03 19:32:26