繁体   English   中英

做DistinctBy()。Select()或Select()。DistinctBy()效率更高吗? C#

[英]Is it more efficient to do DistinctBy().Select() or Select().DistinctBy()? C#

我有这段代码,但是我不确定下面的2个选项中哪个更有效。 谁能让我知道哪个更有效,为什么?

var list1 = await context.Data.Where(i => i.Market == "nasdaq").DistinctBy(i => i.Symbol).Select(i => i.Symbol).ToListAsync();

var list2 = await context.Data.Where(i => i.Market == "nasdaq").Select(i => i.Symbol).DistinctBy(i => i).ToListAsync();

注意:我使用MoreLinq库

由于MoreLinq库未在IQueryable<T>上提供DistinctBy ,仅在IEnumerable<T>上提供了DistinctBy ,这是您在内存Where完成位置之后的第一个查询的一部分。 因此,整个对象被传输,这是次优的。

第二个查询仅使用Symbol ,因此稍微好一点。 但是,重复的符号仍会传输到内存中,因此存在优化的空间。

您可以通过观察DistinctBy(i => i)Distinct()相同来改进它:

var list2 = await context.Data
    .Where(i => i.Market == "nasdaq")
    .Select(i => i.Symbol)
    .Distinct()
    .ToListAsync();

现在,一切都在RDBMS方面完成,包括消除重复项。

暂无
暂无

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

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