[英]LINQ get collection in anonymous type
我有以下LINQ语句:
var query =(from item in _itemRepository.FindAll()
where item.Id == "20649458"
from singelitem in item.ListOfChildren
where singelitem.Property == "singelitem"
from manyitems in item.ListOfChildren
where manyitems.Property == "many"
select new
{
item.Id,
singelitem,
manyitems
});
var result = query.ToList();
Tasks是对象的集合,而where子句
tasks.Property == "something"
匹配集合中的多个项目,但是当我在select中使用匿名类型时,我只会取回匹配结果中的一个(第一个)而不是任务的集合。
如何获取集合中所有匹配的任务?
编辑:真正发生的是我得到了平面对象(就像从join语句得到的数据库结果集一样)。
当您不使用匿名类型时,您要处理的是实体类,该实体类在访问任务时会延迟加载任务。 如果您想用结果加载任务,请尝试使用Include方法来渴望加载子级。 请参见如何构造LINQ to Entities查询以直接加载子对象,而不是调用Reference属性或Load()
这是Linq的正确行为。 实际上,您所期望的是不可能的。 您需要一个与item.Id相匹配的项目。Id==“ 123”; 如果不止一个怎么办? 它只是为每个匹配项创建一个匿名项。 只需考虑将第一个“ from”语句更改为第二个; 您会期望什么?
同样,第一个“ from”语句和第二个“ from”语句之间没有任何关系,这使得此查询有点“奇怪”。 为什么不将查询分为2个; 并创建具有所需属性的新对象?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.