繁体   English   中英

如何优化LINQ-2-SQL表达式?

[英]How to optimize LINQ-2-SQL expression?

我有一个相当复杂的查询,该查询将从表中读取,然后对CONTACT_ID进行分组,然后仅选择计数为1的那些分组。

该查询相当复杂,我不知道如何在LINQ中对其进行优化。

    var linkTable = this.DB.Links
        .Where(l=>l.INSTANCE_ID==123456 && l.CONTACT_ID.HasValue && l.ORGANISATION_ID.HasValue)
        .Select(l => new { l.DEFAULT_LINKED_ORGANISATION, l.LINK_ID, l.CONTACT_ID });

    var defaultOrganizationLinkQuery = linkTable
        .Where(l => l.DEFAULT_LINKED_ORGANISATION)
        .Select(l => l.LINK_ID);

    var singleOrganizationLinkQuery = linkTable
        .GroupBy(l => l.CONTACT_ID)
        .Select(group => new
        {
            CONTACT_ID = group.Key,
            contact_link_count = group.Count(),
            LINK_ID = group.First().LINK_ID
        })
        .Where(l => l.contact_link_count == 1)
        .Select(l => l.LINK_ID);

    var merged = singleOrganizationLinkQuery.Union(defaultOrganizationLinkQuery);

我制作了较短的版本,但我不希望它更快。 如果它有效并且不慢,我将感到满意:

 var merged = this.DB.Links
        .Where(l=>l.INSTANCE_ID==123456 && l.CONTACT_ID.HasValue && l.ORGANISATION_ID.HasValue)
        .GroupBy(l => l.CONTACT_ID)
        .SelectMany(s => s.Where(x => s.Count() == 1 || x.DEFAULT_LINKED_ORGANISATION)
                          .Select(link => link.LINK_ID));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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