草庐IT

running_sum

全部标签

c# - LINQ .SUM() 和可为空的数据库值

我知道为什么会这样,但有人能指出正确的语法方向吗?目前我有:varexpense=fromeindb.I_ITEMwheree.ExpenseId==expenseIdselecte;returnexpense.Sum(x=>x.Mileage??0);我的问题是x.Mileage的类型是“double?”并且在数据库中有空值。我得到的错误是:ExceptionDetails:System.InvalidOperationException:Thecasttovaluetype'Double'failedbecausethematerializedvalueisnull.Eithert

c# - NUnit 3 : Forbid tests to run in parallel

我安装了最新的NUnit(3.2.0),并且所有测试都并行运行。它可能看起来像是理想的行为,但我并没有要求它,实际上它破坏了我的一些测试。我在[OneTimeSetUp]中进行了一些依赖于线程的初始化,似乎我无法做任何事情来强制NUnit按顺序运行我的测试。我读过documentation它指出默认情况下测试不是并行运行的,但实际上它们是!此外,我尝试添加以下属性:[assembly:Parallelizable(ParallelScope.None)]—没有成功。有人知道如何改变这种行为吗?附言我使用ReSharper运行它,但也尝试使用MSVS插件。UPD:我正在使用MVVMLig

c# - C#计算大文件的MD5SUM

我正在使用以下代码来计算文件的MD5SUM-byte[]b=System.IO.File.ReadAllBytes(file);stringsum=BitConverter.ToString(newMD5CryptoServiceProvider().ComputeHash(b));这通常工作正常,但如果我遇到大文件(~1GB)-例如iso镜像或DVDVOB文件-我遇到内存不足异常。不过,我能够在大约10秒内在cygwin中计算同一个文件的MD5SUM。请建议我如何才能让它适用于我程序中的大文件。谢谢 最佳答案 我建议使用替代方法:

c# - 您可以重载 Sum 以添加自定义类型吗

我有一个包含货币和金额的Money结构。我希望能够使用linq对列表求和。publicstructMoney{publicstringCurrency{get;set;}publicdecimalAmount{get;set;}publicstaticMoneyoperator+(Moneym1,Moneym2){if(m1.Currency!=m2.Currency)thrownewInvalidOperationException();returnnewMoney(){Amount=m1.Amount+m2.Amount,Currency=m1.Currency};}}鉴于上面的代

c# - 任务不包含 Run 方法的定义

我第一次尝试在我的代码中实现多线程。当我尝试使用TaskT=Task.Run(()=>{});VisualStudio仍然在Run()下划线声明“任务不包含定义‘运行’”我正在使用System.Threading.Tasks;互联网对这个问题一无所知 最佳答案 .NET4.0没有Task.Run方法。相反,您可以使用:任务T=Task.Factory.StartNew(()=>{});您可以了解更多关于here的信息 关于c#-任务不包含Run方法的定义,我们在StackOverflow

c# - Entity Framework new transaction is not allowed because there are other threads running in the session,多线程保存

我正在尝试将多线程进程的日志保存在数据库中,但出现以下错误:不允许新事务,因为session中还有其他线程在运行。在每个胎面我都有这个功能:internalboolWriteTrace(IResultresult,stringmessage,bytetype){SPC_SENDING_TRACEtrace=newSPC_SENDING_TRACE(message,Parent.currentLine.CD_LINE,type,Parent.currentUser.FULLNAME,Parent.guid);Context.SPC_SENDING_TRACE.AddObject(trac

c# - 使用 Task.Run() 写入控制台失败

我的一位同事发现我们的代码存在问题,花了一段时间才查明到底发生了什么,但这个简单的例子可以最好地证明这一点://FailsclassProgram{staticvoidMain(string[]args){Task.Run(()=>Console.WriteLine("HelloWorld"));Console.ReadKey();}}//WorksfineclassProgram{staticvoidMain(string[]args){Console.Write(String.Empty);Task.Run(()=>Console.WriteLine("HelloWorld"));

c# - Application.Run 和 Form.Load 之间发生了什么?

我有一个用VB.NET为Framework4.5编写的WinForms应用程序。我注意到应用程序的启动时间异常长(我写的其他应用程序在启动时几乎立即启动,这个应用程序需要>5秒)多次启动后启动时间不会改变,所以我猜这不是应用程序首次启动期间未缓存CLR代码的情况。我通过记下启动期间的时间做了一些测试:ModulemodMainPublicMyLogAsSystem.Text.StringBuilderPublicSubMain()MyLog=NewSystem.Text.StringBuilderApplication.EnableVisualStyles()Application.S

c# - Enumerable.Sum() 溢出

嘿,我正在使用LINQ的Enumerable.Sum()扩展方法来计算哈希码,当代码变大时我遇到了OverflowExceptions问题.我尝试将调用放在uncheckedblock中,但这似乎没有帮助。该方法的MSDN文档说如果值太大就会抛出异常,但我检查了反射器,仅此而已:publicstaticintSum(thisIEnumerablesource){if(source==null){throwError.ArgumentNull("source");}intnum=0;foreach(intnum2insource){num+=num2;}returnnum;}基于此反编译

C# - 应用程序.Run()

我刚刚开始.Net开发(C#),遇到了一些让我有点困惑的代码....如果我有FormmyForm=newForm();下面这行实际上做了什么:Application.Run(myForm);它本质上是否与myForm.ShowDialog()或myForm.Show()做同样的事情(这就是我的想法,当运行一个表单时会做)......我总是发现msdn是向新手正确解释Material的糟糕资源 最佳答案 Application.Run(myForm);使该表单对用户可见。它是第一个加载到内存中的表单。它在消息循环中运行此表单,以便您获