繁体   English   中英

在C#中使用LINQ的数据透视表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM