草庐IT

递归实现

全部标签

c# - 如何在不先将整个列表加载到内存的情况下使用 Linq to Sql 实现 SkipWhile?

我需要按发布日期降序排列存储在数据库中的文章,然后使用Id==100获取文章之后的前20条记录。这就是我想用Linq做的事情:IQueryablearticles=db.Articles.OrderByDescending(a=>a.PublicationDate).SkipWhile(a=>a.Id!=100).Take(20);但是,这会生成NotSupportedException,因为LinqtoSql不支持SkipWhile(请参阅here)。一个可能的解决方案是执行查询,然后使用LinqtoObject应用SkipWhile:IEnumerablearticles=db.A

c# - 当组(或递归的子组)包含 ForeignSecurityPrincipal 时,GroupPrincipal.GetMembers 失败

这与其说是一个问题,不如说是给遇到同样问题的任何人的信息。出现以下错误:System.DirectoryServices.AccountManagement.PrincipalOperationException:Anerror(87)occurredwhileenumeratingthegroups.Thegroup'sSIDcouldnotberesolved.atSystem.DirectoryServices.AccountManagement.SidList.TranslateSids(Stringtarget,IntPtr[]pSids)atSystem.D

c# - 为什么 .NET 中有这么多命名集合没有实现 IEnumerable<T>?

随机示例:ConfigurationElementCollection.Net有很多这样的小东西WhateverCollection不实现IEnumerable的类,这意味着我无法将Linq用于开箱即用的对象。甚至在Linq之前,您可能会认为他们会想要使用泛型(我相信这是在C#2中一直引入的)我似乎总是遇到这些烦人的小集合类型。有什么技术原因吗? 最佳答案 答案在问题标题中:“命名集合”。这是在泛型可用之前必须使集合类型安全的方法。在可追溯到.NET1.x的代码中有很多它们,尤其是Winforms。没有合理的方法使用泛型重写它们,那

c# - 如何实现异步 File.Delete/Create/Move?

由于我必须在我的应用程序中进行大量文件I/O操作,我决定异步实现它们。查看MSDN,没有File.Create、File.Delete和File.Move的异步副本。据我了解,原因是不存在用于文件删除、创建或移动的异步Win32实现,所以我最终得到以下解决方案:publicstaticTaskDeleteAsync(stringpath){Guard.FileExists(path);returnTask.Run(()=>File.Delete(path));}publicstaticTaskCreateAsync(stringpath){Guard.IsNotNullOrWhites

c# - 我可以使用类型化工厂设施返回基于(枚举)参数的实现吗?

不确定这是否可能。我需要根据枚举值返回正确的服务实现。所以手工编码的实现看起来像这样:publicenumMyEnum{One,Two}publicclassMyFactory{publicITypeIWantToCreateCreate(MyEnumtype){switch(type){caseMyEnum.OnereturnnewTypeIWantToCreate1();break;caseMyEnum.TworeturnnewTypeIWantToCreate2();break;default:returnnull;}}}返回的实现具有额外的依赖项,需要通过容器注入(inject

c# - 等于 NHibernate 实体的实现,unproxy 问题

在NHibernate3.0Cookbook中,有一个基本实体类型的示例实现。equals是这样实现的:publicabstractclassEntity{publicvirtualTIdId{get;protectedset;}publicoverrideboolEquals(objectobj){returnEquals(objasEntity);}privatestaticboolIsTransient(Entityobj){returnobj!=null&&Equals(obj.Id,default(TId));}privateTypeGetUnproxiedType(){re

c# - 为什么必须显式实现此接口(interface)?

几年后回到C#,所以我有点生疏了。遇到这个(简化的)代码,它让我摸不着头脑。为什么必须显式实现IDataItem.Children属性(property)?不正常Children属性满足要求?毕竟属性是直接用来满足的。为什么不是隐含的?publicinterfaceIDataItem{IEnumerableChildren{get;}}publicclassDataItem:IDataItem{publicCollectionChildren{get;}=newCollection();//Whydoesn't'Children'aboveimplementthisautomatica

C# 编译器无法识别正在实现接口(interface)的类

以下代码无法编译(使用VS2010),我不明白为什么。编译器应该能够推断出List与IEnumerable兼容(抱歉找不到更好的词),但不知何故它没有。我在这里缺少什么?interfaceITest{voidTest();}classTestClass:ITest{publicvoidTest(){}}classProgram{staticvoidTest(IEnumerabletests){foreach(vartintests){Console.WriteLine(t);}}staticvoidMain(string[]args){varlst=newList();Test(lst

c# - UserManager.FindAsync 不适用于 UserStore 的自定义实现

我是ASP.NETIdentity的新手。为了更好地理解事情,我正在做ASP.NETIdentity的自定义实现。我能够使用自定义代码成功创建用户。然而FindAsync(username,password)功能不工作。这是我到目前为止所做的:用户:这是我的User从IUser继承的类publicclassUser:IUser{publicUser(){Id=0;}publicintId{get;privateset;}publicstringUserName{get;set;}publicstringPasswordHash{get;set;}publicstringSecurity

c# - 如何在 AWS Lambda C# 实现中使用依赖注入(inject)

我使用AWS.NetSDK、.net核心版本1.0创建了Lambda函数。我想实现依赖注入(inject)。由于lambda函数在AWS环境中独立触发和运行,因此不存在像Startup这样的类。如何以及在何处配置我的容器以实现此实现? 最佳答案 我知道我来晚了,但我添加这个是因为我相信互联网上有一些不好的/缺少的例子。@Erndob关于已接受的答案是正确的。您只会创建更多实例。根据您在DI容器中进行的注册,您需要牢记:你在做什么注册以实现IDisposableAWS将您的对象实例保存多长时间。我找不到任何关于此的文档。结束了这样的事