我想看看我是否可以将3个LINQ查询合并为一个。我遇到的问题是我需要其中一个内部LINQ语句的where子句中的Anon属性之一的值,这似乎不起作用。我也尝试内联LINQ声明,但也没有奏效。使用一种匿名类型的Linq使用其中一种匿名类型属性
有没有人做过这个? PlaceName是我使用PlaceID时遇到的问题。
var Persons = from _person in people select new
{
ID = _person.Id,
Name = _person.Name,
Nationality = _person.Nationality,
Age = _person.Age,
PlaceID = (from _peopleplaces in peoplePlace where _person.Id ==_peopleplaces.PersonId select _peopleplaces.PlaceId).FirstOrDefault(),
PlaceName = (from _places in places where _places.Id == PlaceID select _places.Name).FirstOrDefault()
};
编辑:我遇到的实际问题是,PlaceID不能在地名查询中使用,它具有其下的红色波浪线。使用1而不是3声明的原因仅仅是为了我自己,我正在学习LINQ并希望看看我能做什么,不能做什么。我假设使用一个集合而不是3个单独的集合来填充Persons对象看起来更好。
实际的错误是PlaceID在当前上下文中不存在。
您有什么麻烦吗? – JaredPar 2012-02-18 22:22:02
为什么不写出不同的3个查询?它的可读性和简单性以及最终结果*最可能*将是相同的,即使在性能方面也是如此。 – Tigran 2012-02-18 22:23:15