DistinctBy()。Select()或Select()。DistinctBy()是更高效吗? C#
我有这段代码,但我不确定以下两个选项中的哪一个会更有效率。谁能让我知道哪个更有效率,为什么?DistinctBy()。Select()或Select()。DistinctBy()是更高效吗? C#
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>
,第一个查询后,在内存中完成Where
部分。因此,整个对象被转移,这是不理想的。
第二个查询只需要Symbol
,所以它稍好些。但是,重复的符号仍然会传输到内存中,因此有优化的空间。
您可以通过观察DistinctBy(i => i)
改进它是一样的Distinct()
:
var list2 = await context.Data .Where(i => i.Market == "nasdaq")
.Select(i => i.Symbol)
.Distinct()
.ToListAsync();
现在一切都在RDBMS端完成,包括消除重复的。
以上是 DistinctBy()。Select()或Select()。DistinctBy()是更高效吗? C# 的全部内容, 来源链接: utcz.com/qa/257255.html