ienumerable 相关问题

IEnumerable,它的通用对应物IEnumerable <T>是用于通过项集合迭代(或枚举)的.NET接口。

通用 NOT 约束,其中 T : !IEnumerable

根据标题,是否可以在 c# 4 中声明类型否定约束? 感兴趣的用例是允许以下重载共存 void doIt(T 什么){} ...

回答 7 投票 0

C# 角色提供者。 getallroles() 方法重写 Var userdetails= HttpContext.Current.GetOwinContext().Authentication.User.Claims;

我在登录页面中使用 SSO,虽然通过 okta 进行身份验证并接收用户声明详细信息,但代码无法正常工作,而是在现有角色提供程序类旁边进行控制。

回答 1 投票 0

LINQ 中的 .Where 实际上是如何工作的?

在 Joseph Albahari 的《C# in a Nutshell》一书中,据说 .Where 的实现如下: 公共静态 IEnumerable 其中 (此 IEnumerable 在 Joseph Albahari 的《C# in a Nutshell》一书中,据说 .Where 的实现如下: public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource,bool> predicate) { foreach (TSource element in source) if (predicate (element)) yield return element; } 但对我来说,这里使用“foreach”似乎会枚举我们的集合,所以在我们有 collection.Where(x => ...).Where(x => ...).ToList() 的情况下 -枚举将发生 3 次:第一次在第一个Where中,第二次在第二个Where中,最后一次在ToList()中。但我在想,LINQ 链的整个思想就是只枚举一次。 我是否弄错了,它只会被枚举一次?请指导我 看起来在这里使用“foreach”将枚举我们的集合, 它确实看起来像这样,但实际情况并非如此。相反,yield关键字告诉编译器应该对方法执行转换,以便它返回一个IEnumerable对象,该对象仅知道如何迭代集合,而无需实际执行该工作。在您实际使用并迭代此返回的 IEnumerable 之前,根本不会发生枚举。 编译器转换以可堆栈的方式发生,因此即使多次调用.Where()(如问题中的collection.Where(x => ...).Where(x => ...).ToList()表达式),仅发生一次枚举。您也可以混合使用其他 linq 操作,例如 .Select()、.Any()、.Aggregate() 等。 这可以使编写 linq 代码极其高效。缺点是每次使用此方法都会导致枚举对象的内存分配,因此了解内存受限与 CPU 受限的情况很有用,并且通常值得将其中一些结合起来,因此 .Where(x => ...).Where(x => ) 改为.Where(x => ... && ...)。 最后,虽然也有例外,但您应该 尽可能避免调用 ToList()(或 ToArray())。相反,对于方法参数、返回类型和变量声明,请使用 IEnumerable<T> 而不是 List<T> 或 T[]。在许多情况下,最终的foreach循环、数据绑定或其他机制足以强制最终枚举,这样您实际上不需要构造列表或数组,并且这些其他选项更有效 而不是实际构建一个可能不需要的列表。

回答 1 投票 0

支持 IEnumerable 时奇怪的 JSON 序列化

我在支持 IEnumerable 和 JSON 序列化时遇到了一个特殊问题。我在这里和网上搜索了一段时间,发现这个问题并不新鲜。然而,我发现的是

回答 0 投票 0

按包含列表索引和位置的元组对项目列表进行排序

我有一个物品清单 IEnumerable 来源 [0] 来源项目 0 [1] sourceItem1 [2] sourceItem2 [3] sourceItem3 .. 我想组织它/按我的元组列表排序 var order= 新 L...

回答 0 投票 0

如何将对象投射到匿名 T

我在使用 C# 时遇到问题 首先,我的辅助功能,以便更好地理解 公共静态类扩展{ public static IEnumerable ToEnumerable(这个 T 值...

回答 0 投票 0

使用返回类型 List<T> 与 IEnumerable<T>

我创建了一个函数 foo,它创建并返回一种 List。 ReSharper 建议我将返回类型更改为 IEnumerable。但是,我知道在函数中...

回答 4 投票 0

IQueryCollection.ToList() 不需要地组合值

我的项目使用了两个库: Swashbuckle.ASPNetCore 流利验证 我正在编写一个验证器拦截器来做一些额外的检查,这些检查需要与验证器分开:MyModelValida ...

回答 1 投票 0

IEnumerable First()、ElementAt(0) 和 Count() 在本地执行得非常慢 [关闭]

我在 IEnumerable 上执行了 Count() 以查看它返回了多少条记录。它们是大约 25 个属性的对象。我在代码中打了一个断点,差不多用了 2 分钟才返回。这...

回答 0 投票 0

何时将 IEnumerable 转换为 IAsyncEnumerable

在控制器操作返回类型的 .NET 文档(文档链接)中,它显示了有关如何返回异步响应流的示例: [HttpGet("异步销售")] 公共异步 IAsyncEnumerab ...

回答 2 投票 0

返回一个通用的 IEnumerable<T>

我想要一个返回任何集合类型的方法 - 实现 IEnumerable (?) - (例如:List,Stack,Queue,...) 此外,它应该返回任何数据类型的任何集合类型。 所以我

回答 6 投票 0

当我将泛型类型传递给 IEnumerable 时,LoadFromEnumerable 出现错误

已知类型工作正常:但我的要求是我需要传递通用类型..请帮助 var jsonData = JsonConvert.DeserializeObject>(smalljson...

回答 0 投票 0

当我将泛型类型传递给 IEnumerable 时出现错误

这对已知类型工作正常: var jsonData = JsonConvert.DeserializeObject>(smalljson); 但是当我使模型通用时出现此错误: 这...

回答 0 投票 0

如何再次枚举 IEnumerable?

我有以下内容: IEnumerable lines // 传入方法 foreach (var data in lines.ParseAsEnumberable(Delimiter, StringQualifer)) { ... } 这对这个特殊的前景很好......

回答 1 投票 0

如何确定 IEnumerable 的字节大小以获得良好的批量大小?

我正在将记录写入 csv 格式,以便通过对上传文件大小有限制的外部 API 将其作为文件上传。我将记录写入内存的方法如下所示: 使用

回答 2 投票 0

我可以为每个条目使用具有不同属性的 IEnumerable 作为方法参数吗?

我对 C# 比较陌生。我正在尝试使用 IEnumerable 集合作为 C# 函数的参数,但我也想定义要返回的属性。 假设我有一辆车 IEnume...

回答 2 投票 0

这是 resharper 中的错误吗?

我这里有一些 Resharper 曲线。 他们告诉我,我可能正在进行 IEnumerable 的多重枚举。但是你可以看到这不是真的。 final 明确声明...

回答 2 投票 0

验证未知类型的集合或枚举

我正在寻找向我的模型添加属性验证,以确保集合属性具有项目。也许有更好的方法来验证我的模型中的集合。如果是这样,我很乐意...

回答 3 投票 0

从 IEnumerable 转换为 IEnumerator

我正在玩 IEnumerable/ 和 IEnumerator/。在我的一个试验中,我试图通过使用 ca... 将 IEnumerable 类型的返回值分配给 IEnumerator

回答 2 投票 0

从一个IEnumerable<KeyValuePair<>&gt中重新创建一个字典。

我有一个方法,返回一个IEnumerable >,但有些调用者要求方法的结果是一个字典。如何将IEnumerable&...

回答 2 投票 171

© www.soinside.com 2019 - 2024. All rights reserved.