草庐IT

c# - 在C#中,使用List<T>时,缓存Count属性好不好,还是属性够快?

换句话说,如果有的话,下面哪个会更快?ListmyList;......foreach(WhateverwhateverinSomeOtherLongList){...if(i或ListmyList;......intlistCount=myList.Count;foreach(WhateverwhateverinSomeOtherLongList){...if(i谢谢:) 最佳答案 Count只是一个整数。当你问它的值(value)时,它不会被计算出来。它是“预先计算的”,所以是一样的。选项1更具可读性:)

c# - LINQ to SQL 转换溢出

我真的被困在这个问题上了。我在SQL方面有广泛的背景,但我刚开始一份新工作,他们更喜欢使用LINQ进行简单查询。于是本着学习的精神,我尝试重写了这个简单的SQL查询:SELECTAVG([Weight]/[Count])AS[Average],COUNT(*)AS[Count]FROM[dbo].[AverageWeight]WHERE[ID]=187为了清楚起见,这里是表架构:CREATETABLE[dbo].[AverageWeight]([ID]INTNOTNULL,[Weight]DECIMAL(8,4)NOTNULL,[Count]INTNOTNULL,[Date]DATET

c# - 如何为 IQueryable.Count 获取 ToTraceString

我使用((ObjectQuery)IQueryable).ToTraceString()获取和调整将由LINQ执行的SQL代码。我的问题是,与大多数IQueryable方法不同,IQueryable.Count定义如下:publicstaticintCount(thisIQueryablesource){return(int)source.Provider.Execute(Expression.Call(typeof(Queryable),"Count",newType[]{source.ElementType},source.Expression));}执行查询而不编译并返回IQue

c# - LINQ Count() until,这样效率更高吗?

假设我想检查集合中是否至少有N个元素。这比做更好吗?Count()>=N使用:publicstaticboolAtLeast(thisIEnumerableenumerable,intmax){intcount=0;returnenumerable.Any(item=>++count>=max);}甚至publicstaticboolEquals(thisIEnumerableenumerable,intamount){returnenumerable.Take(amount).Count()==amount;}我如何进行基准测试?//////Returnswhethertheenum

c# - 使用 Parallel.ForEach 时跟踪进度

我正在重构我的程序以使用Parallel.ForEach。之前,当我使用常规for循环时,我使用Dispatcher更新WPF进度条,通过将当前数组索引除以数组大小来显示完成百分比。对于并行的foreach循环,这不会正确显示,即%随机跳跃,这是预期的。如何为每个循环更新并行的WPF进度条,以便跟踪已完成的迭代次数? 最佳答案 正如SLaks所建议的,您应该只增加进度条值,而不是将其设置为您从Parallel.For方法获得的当前索引。但是,我会认真考虑使用一些比在每次迭代时向UI线程发送消息更便宜的方法。如果您有大量迭代,那么每次

c# - Count 或 Skip(1).Any() 我想知道是否有超过 1 条记录的地方 - Entity Framework

我不确定是什么时候,但我读了一篇关于此的文章,其中指出Skip(1).Any()的用法优于Count()使用EntityFramework时的同情心(我可能记错了)。在看到生成的T-SQL代码后,我不确定这一点。这是第一个选项:intuserConnectionCount=_dbContext.HubConnections.Count(conn=>conn.UserId==user.Id);boolisAtSingleConnection=(userConnectionCount==1);这会生成以下合理的T-SQL代码:SELECT[GroupBy1].[A1]AS[C1]FROM(

c# - 当 IsEmpty == true 时,为什么 ConcurrentQueue<T>.Count 不返回 0?

我在JamesMichaelHare'sblog上阅读了有关.NET4中新的并发集合类的信息,和pagetalkingaboutConcurrentQueue说:It’sstillrecommended,however,thatforemptychecksyoucallIsEmptyinsteadofcomparingCounttozero.我很好奇-如果有理由使用IsEmpty而不是将Count与0进行比较,为什么该类在执行任何昂贵的计数工作之前不在内部检查IsEmpty并返回0?例如:publicintCount{get{//CheckIsEmptysowecanbailoutqu

c# - 编译器错误 "Default parameter specifiers are not permitted"

下面是我的代码。publicclassPItem{publicStringcontent;publicintcount;publicintfee;publicintamount;publicstringdescription;//DefaultvaluespublicPItem(String_content="",int_count=0,int_fee=0,string_description="",int_amount=0){content=_content;count=_count这是在一个类里面。当我尝试运行程序时出现此错误:Defaultparameterspecifiersa

c# - 计算 Int32 中的前导零

如何计算Int32中的前导零?所以我想做的是编写一个函数,如果我的输入是2,它返回30,因为在二进制中我有000...0000000000010。 最佳答案 注意使用dotnetcore>=3.0?看here.我们以数字20为例。可以用二进制表示如下:00000000000000000000000000010100首先,我们通过右移和按位对自身进行“或”操作,将最高有效位“涂抹”到较低的位位置上。00000000000000000000000000010100or00000000000000000000000000001010(ri

c# - dot net 是否有像 IEnumerable 这样带有 Count 属性的接口(interface)?

dotnet是否有像IEnumerable这样带有计数属性的接口(interface)?我知道IList和ICollection等接口(interface)确实提供了Count属性,但似乎这些接口(interface)首先是为可变数据结构设计的,用作只读接口(interface)似乎是事后才想到的——存在IsReadOnly字段和mutators抛出异常当此属性为真时,IMO对此提供了充分的证据。目前我正在使用一个名为IReadOnlyCollection的自定义接口(interface)(请参阅我自己对这篇文章的回答),但我很高兴知道其他替代方法。 最佳答