草庐IT

避免全表扫描

全部标签

c# - 避免 switch case -linq

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:DynamicLINQOrderByswitch(sort){case"Title":queryResults=queryResults.OrderBy(r=>r.Title);break;default:queryResults=queryResults.OrderBy(r=>r.LastName);break;有什么办法可以摆脱上面的开关block吗?我可以做一些事情吗:queryResults=queryResults.OrderBy(r=>r."sort");orqueryResults=queryR

c# - 在 C# 中使用没有对话框的扫描仪

我正在构建一个用于远程控制扫描仪设备的.Net4.0应用程序。我已经尝试了TWAIN和WIA库,但我遇到了同样的问题。扫描图像没有扫描仪选择和扫描设置对话框。我在WIAscriptingin.Net上找到了一篇有用的文章,并将其修改为:privateImageScan(stringdeviceName){WiaClasswiaManager=null;//WIAmanagerCOMobjectCollectionClasswiaDevs=null;//WIAdevicescollectionCOMobjectItemClasswiaRoot=null;//WIArootdeviceCO

c# - 如何避免重复的接口(interface)代码?

由于接口(interface)不能包含实现,在我看来这会导致从接口(interface)继承的类中出现代码重复。在下面的示例中,假设设置从Stream读取的前10行左右是重复的。尽量不要关注这里的措辞,而是关注在每个类之间创建重复代码是多么容易的概念。例如:publicinterfaceIDatabaseProcessor{voidProcessData(Streamstream);}publicclassSqlServerProcessor:IDatabaseProcessor{voidProcessData(Streamstream){//settinguplogictoreadt

c# - 从 C# 程序读取 outlook 消息时如何避免 outlook 安全警报

我需要通过C#程序读取Outlook收件箱中新邮件的主题、发件人地址和邮件正文。但我收到安全警报“一个程序正在尝试访问您存储在Outlook中的电子邮件地址。你想允许这个吗?通过一些谷歌搜索,我发现很少有第三方COM库可以避免这种情况。但我正在寻找不需要任何第三方COM库的解决方案。 最佳答案 我在访问Outlook邮件项目的发件人电子邮件地址时遇到了同样的问题。为避免“安全警报”,不要创建新的应用程序对象,而是使用Globals.ThisAddIn.Application来创建新的邮件项。stringGetSenderEmail(

c# - 为什么 BinaryWriter 会在流的开头添加乱码?你如何避免它?

我正在调试将对象的片段写入文件的一些问题,我已经开始处理打开文件并在其中写入“TEST”的基本情况。我正在通过类似的方式做到这一点:staticFileStreamfs;staticBinaryWriterw;fs=newFileStream(filename,FileMode.Create);w=newBinaryWriter(fs);w.Write("test");w.Close();fs.Close();不幸的是,这最终会在文件前面添加一个框,它看起来像这样:测试,前面有一个有趣的盒子。为什么会这样,我该如何避免?编辑:它似乎没有在这里显示框,但它是看起来像乱码的unicode字

c# - 如何避免内存泄漏?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我可以使用哪些技巧来避免应用程序中的内存泄漏?有没有我可以注意的问题或陷阱?

c# - 在没有扫描仪/摄像头设备的情况下测试 WIA

我用WIA写了一个简单的扫码。我没有扫描仪设备,因此无法对其进行测试。我可以模拟WIA设备来测试它吗? 最佳答案 这绝对是您想要的:https://github.com/twain/wia-on-twain我模拟了一台扫描仪,发布了一个TWAIN和一个WIA界面。还模拟了图形页面的扫描,因此您可以尝试不同的分辨率和配色方案。 关于c#-在没有扫描仪/摄像头设备的情况下测试WIA,我们在StackOverflow上找到一个类似的问题: https://stack

c# - 进行多次更新时如何避免在 Entity Framework 4 中锁定数据库

这个问题是关于使用MicrosoftEntityFramework处理许多插入或更新的最佳实践。问题是我们编写了一个长时间运行的程序,它从数据库中提取数千条记录,然后逐条更新每条记录的单个字段。令我们沮丧的是,我们意识到这些更新的记录中的每一个都在ObjectContext未被释放期间被锁定。下面是一些伪代码(实际上并没有运行)来说明:using(ObjectContextcontext=newObjectContext()){varmyRecords=context.CreateObjectSet().AsQueryable();foreach(varrecordinmyRecord

c# - 数组(结构类型)上的 Where 是否经过优化以避免不必要的结构值复制?

出于内存性能的原因,我有一个结构数组,因为项目的数量很大,并且项目会定期被抛出,因此会扰乱GC堆。这不是我是否应该使用大型结构的问题;我已经确定GC垃圾处理会导致性能问题。我的问题是当我需要处理这个结构数组时,我应该避免使用LINQ吗?由于结构不小,按值传递它是不明智的,而且我不知道LINQ代码生成器是否足够智能以执行此操作。结构如下所示:publicstructManufacturerValue{publicintManufacturerID;publicstringName;publicstringCustomSlug;publicstringTitle;publicstringD

c# - 使用 LINQ 创建字典并避免 "item with the same key has already been added"错误

我想在字典中找到一个键,如果找到则替换值,如果找不到则添加键/值。代码:publicclassMyObject{publicstringUniqueKey{get;set;}publicstringField1{get;set;}publicstringField2{get;set;}}LINQ解决方案(抛出已添加具有相同键的项目。):DictionaryobjectDict=csvEntries.ToDictionary(csvEntry=>csvEntry.ToMyObject().UniqueKey,csvEntry=>csvEntry.ToMyObject());ForEach