加速LINQ对象查询

时间:2016-05-11 00:59:57

标签: c# linq

我正在尝试加速以下LINQ对象查询:

var setOfCodes = codeList1
    .SelectMany(q => q.Codes)
    .Union(codeList2.SelectMany(q => q.Codes)
    .Union(codeList3.SelectMany(q => q.Codes)
    .ToList();

其中

codeListX is a List<Item>

public Item {
    public List<int> Codes = new List<int>();
}

示例:

var codeList1 = new List<Item> {
    new Item {
        Codes = new List<int> {
            100,
            105,
            110
        }
    },
    new Item {
        Codes = new List<int> {
            100,
            110,
            115
        }
    },
};
var codeList2 = new List<Item> {
    new Item {
        Codes = new List<int> {
            150,
            155,
            160
        }
    },
    new Item {
        Codes = new List<int> {
            150,
            155,
            170
        }
    },
};

输出应该是(关于订单没关系,我可以稍后排序):

100, 105, 110, 115, 150, 155, 160, 170

IE:输出一个包含codeListX内所有代码的列表。

有更快的方法吗?

1 个答案:

答案 0 :(得分:4)

你可以这样写:

var setOfCodes = new[] { codeList1, codeList2, codeList3 }
    .SelectMany(x => x)
    .SelectMany(x => x.Codes)
    .Distinct()
    .ToList();