您现在的位置是:网站首页> 编程资料编程资料
.NET 6新特性试用之TryGetNonEnumeratedCount 方法_实用技巧_
2023-05-24
399人已围观
简介 .NET 6新特性试用之TryGetNonEnumeratedCount 方法_实用技巧_
前言:
.NET 6新增了TryGetNonEnumeratedCount方法,计算可枚举类型的元素总数。
LINQ不是已经有了Count方法吗,为什么还要画蛇添足呢?
下文来看看具体情况!!!
一、举例
尝试下列代码:
var b = new B(); Console.WriteLine($@"{b.Count()}"); var a = new A (); Console.WriteLine($@"{a.Count()}"); class A : IEnumerable { public IEnumerator GetEnumerator() { throw new NotImplementedException(); } IEnumerator IEnumerable.GetEnumerator() { throw new NotImplementedException(); } } class B : A ,ICollection { public int Count => 10086; public bool IsSynchronized => throw new NotImplementedException(); public object SyncRoot => throw new NotImplementedException(); public void CopyTo(Array array, int index) { throw new NotImplementedException(); } }
你会发现,b.Count()能够执行,而a.Count()会报错:

二、原理
这是由LINQ内部实现造成的。
对于某些集合类型,如果无法快速确定集合元素数量——例如Count属性,调用Count()则必须枚举整个集合以确定元素的数量。
在某些情况下,枚举会严重影响程序性能,比如EF Core下使用IQueryable.Count()就需要访问数据库获取全部记录才能计数。
因此,更高效地计算序列中的元素数,就是使用TryGetNonEnumeratedCount方法,如果可以快速计数,该方法将返回true并将计数作为out变量返回。
结论:
建议你始终使用以下格式代码,去获取可枚举类型的元素总数:
if (!enumerable.TryGetNonEnumeratedCount(out var count)) { //使用其他方式获取元素数量 }到此这篇关于.NET 6新特性试用之TryGetNonEnumeratedCount 方法的文章就介绍到这了,更多相关TryGetNonEnumeratedCount 方法内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- .NET 6新特性试用之System.Text.Json功能改进_实用技巧_
- .NET 6新特性试用之常量内插字符串_实用技巧_
- .NET 6新特性试用之DateOnly和TimeOnly类型_实用技巧_
- .NET 6新特性试用之Nuget包验证_实用技巧_
- ASP.NET Core启动地址配置方法及优先级顺序_实用技巧_
- .Net MVC将Controller数据传递到View_实用技巧_
- 基于 .NET 6 的ASP.NET Core启动地址配置方法及优先级顺序_实用技巧_
- ASP.NET CORE实现跨域_实用技巧_
- ASP.NET CORE读取json格式配置文件_基础应用_
- Web API身份认证解决方案之Basic基础认证_实用技巧_
