[英]Pivot List of entities using LINQ in C#
我所拥有的是从我想透视的数据库返回的实体的列表,这样我最终得到了一个新的实体列表,其中删除了重复项,并将透视项附加到了新实体上。
目前,我有一个简单的解决方案,例如:
IQueryable<Entity> results // being passed in from calling method.
List<Entity> pivotedEntities = new List<Entity>();
foreach (Entity entity in results)
{
if (pivotedEntities.Contains(entity))
{
Entity matchedEntity = pivotedEntities.Find(e => e.Id == entity.Id);
matchedEntity.RelatedEntities.Add(entity.RelatedEntity);
}
else
{
pivotedEntities.Add(new Entity());
}
}
return pivotedEntities.AsQueryable();
这很好,但是我希望能够对IQueryable结果变量使用LINQ查询来实现相同的目的,以便它保持延迟执行,而不是在我进入foreach后立即执行。
我还有其他一些围绕此代码调用的方法,这些方法也改变了IQueryable,然后我希望在应用所有过滤器后执行对数据库的调用。
希望一切都有道理。
也许这将减少几个循环。
List<Entity> pivotedEntities = new List<Entity>();
int index = 0;
foreach (Entity entity in results)
{
index = pivotedEntities.IndexOf(e => e.Id == entity.Id);
if (index>-1)
{
pivotedEntities[index].RelatedEntities.Add(entity.RelatedEntity);
}
else
{
pivotedEntities.Add(new Entity());
}
}
return pivotedEntities.AsQueryable();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.