小编dno*_*ord的帖子

匹配两个列表(或数组)中的项

我的工作有问题希望减少到以下内容:我有两个List<int>s,我想看看是否有任何ints in ListA等于任何intin ListB.(它们可以是阵列,如果这样可以让生活变得更轻松,但我认为它List<>有一些可能有帮助的内置魔法.)而且我确信这是一个LINQ友好的问题,但我在这里工作的是2.0.

到目前为止我的解决方案是foreach通过ListA,然后foreach通过ListB,

foreach (int a in ListA)
{
    foreach (int b in ListB)
    {
        if (a == b)
        {
            return true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当它们每个长三个项目时实际上非常光滑,但现在它们长200并且它们经常不匹配,所以我们得到N ^ 2比较的最坏情况.即使是40,000次比较也相当快,但我想我可能会遗漏一些东西,因为N ^ 2对于这个特殊问题似乎很天真.

谢谢!

.net c# arrays list

19
推荐指数
2
解决办法
3万
查看次数

流作为System.Net.Mail的附件是0字节

我有一个项目,我正在使用PDF生成器向用户发送文件.我们希望为用户提供将此文件附加到电子邮件的选项,而我们在使用Stream对象和附件逻辑时遇到问题.

我们从ABCpdf开始,它有两个保存方法:它可以保存到Stream,或者如果你给它一个字符串,它会尝试保存到磁盘上的文件.我们两个都没问题.

Stream stream = new MemoryStream();
myPdf.Save(stream);
Run Code Online (Sandbox Code Playgroud)

此时一切都很酷 - stream有几千字节的数据,如果你.save()到一个文件,你得到一个具有相同字节数的实际文件.

所以我们此时附上一封电子邮件(初始化邮件对象后,设置为:和发件人:等):

mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
Run Code Online (Sandbox Code Playgroud)

...让我们收到一个0字节的电子邮件,但正确的文件名.

我在网上找到的所有例子都使用StreamReader或StreamWriter或Flush()等.它总是看起来比简单传递Stream更复杂,但可能只有一两行更复杂.这些示例都不是以Stream开头的 - 他们总是试图将数组转换为Stream来向您展示它是多么容易,或者从磁盘中获取文件(我们无法做到这一点,这就是为什么我们很兴奋使用Stream).

无论如何,如果有人能解释我做错了什么或我应该做什么,我真的很感激.谢谢.

.net asp.net email streaming attachment

17
推荐指数
1
解决办法
8322
查看次数

从ADFS声明auth

我尝试通过WPF应用程序连接到SharePoint Online实例.我发现这篇文章描述了一个可能的解决方案,但问题是特定实例前面有一个Active Directory联合身份验证服务(ADFS),我不知道如何获取auth-token.(我无法为我的应用程序创建证书以对adfs进行身份验证.)

任何已经完成此操作的人都可以通过一些代码片段来支持我吗?

c# authentication sharepoint adfs active-directory

14
推荐指数
2
解决办法
1万
查看次数

我应该使用什么变量类型来保存图像?

我将把图像保存到SQL数据库中(不知道在那里使用什么类型),我将查询数据库中的学生肖像拍摄图像.

我应该使用什么变量类型来存储此图像?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nana_s_Student_Gradebook
{
    class Student
    {
        public string name { get; set; }
        public string lastName { get; set; }
        public byte[] picture { get; set; }
        public DateTime dateOfBirth { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么指导吗?:)

c# sql types

9
推荐指数
1
解决办法
3万
查看次数

在.NET中使用try-catch进行流量控制是"糟糕的"吗?

我刚刚在一个项目中找到:

try
{
    myLabel.Text = school.SchoolName;
}
catch
{
    myPanel.Visible = false;
}
Run Code Online (Sandbox Code Playgroud)

我想和开发人员谈谈,而不是写这个,说发生null异常(因为school理论上可能是null,不是myLabel)会使计算机发出三次蜂鸣声并睡两秒钟.但是,我想知道我是否错过了关于这一点的规则.显然,这不是try/catch的预期用途,但这是不好的,因为它因性能考虑而无视意图或不好?我觉得这很糟糕,但我想说的不仅仅是"那真的很糟糕".

c# try-catch

6
推荐指数
3
解决办法
4325
查看次数

重载构造函数和重用代码

比方说,我有一个对象Customer有几个属性(ID,FirstName,LastName).我有默认的构造函数Customer(),但后来我也有了Customer(DataRow dr),因为我从数据库加载这个对象,这是一个简单的方法.

我经常谈到我想要设置另一个构造函数的地方,Customer(int ID)有时我想要加载一个Customer但是我还没有去过数据库.对我来说最简单的方式似乎是这样的:

Customer(int ID)
{
    DataTable dt = DataAccess.GetCustomer(ID);
    if (dt.Rows.Count > 0)
    {
        // pass control to the DataRow constructor at this point?
    }
    else
    {
        // pass control to the default constructor at this point?
    }   
}
Run Code Online (Sandbox Code Playgroud)

重用已经在DataRow构造函数中的代码是有意义的,但我无法找到一种方法来调用它并返回它给我的内容.通过谷歌搜索,我发现了有关使用: this()语法重构的构造函数的信息,但所有这些示例似乎都是向后或与我正在尝试的内容不兼容.

所以我对构造函数的理解存在差距,但我似乎无法解决它.我错过了什么?

c# oop constructor

4
推荐指数
2
解决办法
2580
查看次数

针对.NET 2.0的VS2008并没有阻止我使用C#3功能

我有一个VS2005解决方案,想要在新的一年里下VS2005.我对升级过程感到非常满意,并且惊喜地看到我的构建脚本大部分仍然有效.

我的问题是围绕多目标功能 - 我没有在我的服务器上安装.NET 3.5,所以我必须继续以.NET 2.0为目标.这主要是有效的,但我发现我可以做的事情

var returnMe = "result: " + result.ToString();
Run Code Online (Sandbox Code Playgroud)

...并且仍然成功调试项目.

当我将代码添加到构建服务器时,构建失败,说没有定义"var".

那么,我应该期待哪一个?

  1. VS2008,针对.NET 2.0,在我尝试做C#3时应该抛出错误
  2. 构建服务器,意识到我的目标是.NET 2.0,应该理解我正在做的事情并将事物编译成2.0兼容的二进制文件

有任何想法吗?

.net multitargeting visual-studio-2008 visual-studio .net-2.0

4
推荐指数
1
解决办法
238
查看次数

SQL SELECT ... WHERE with REPLACE - 担心它效率低下

在SQL Server 2005中,我有一个产品搜索,如下所示:

select ProductID, Name, Email 
from Product
where Name = @Name
Run Code Online (Sandbox Code Playgroud)

我被要求忽略Product.Name中的几个"特殊"字符,以便搜索"Potatoes"返回"Po-ta-toes"以及"Potatoes".我的第一个想法是这样做:

select ProductID, Name, Email 
from Product
where REPLACE(Name, '-', '') = @Name
Run Code Online (Sandbox Code Playgroud)

......但是第二个想法,我想知道我是否通过在每个候选结果上运行一个函数来杀死性能.SQL有一些优化魔法可以帮助它快速完成这类工作吗?您能想到我能够尝试满足我的要求吗?

sql replace sql-server-2005

4
推荐指数
2
解决办法
286
查看次数

发送电子邮件,但不是现在

我正在编写一个用户将创建约会的应用程序,并立即收到确认其约会的电子邮件.我还想在他们预约的那天发送电子邮件,提醒他们实际出现.

我在MS SQL上的ASP.NET(2.0).即时电子邮件没问题,但我不确定解决提醒电子邮件的最佳方式.基本上,我可以想到三种方法:

  1. 设置每晚运行的SQL作业,将SQL电子邮件发送给当天有约会的人.
  2. 以某种方式发送电子邮件时带有"请勿提前交付"标志,尽管这似乎是我可能正在发明的东西.
  3. 编写另一个每晚在特定时间运行的应用程序.

我错过了一些明显的东西吗 我怎么能做到这一点?

sql asp.net smtp

3
推荐指数
2
解决办法
711
查看次数

零星的 ASP.NET 数据错误:“找不到表 0”

在生产环境中部署了 ASP.NET 站点的新版本后,我每秒记录数十个数据错误,几乎总是出现错误“找不到表 0”。我们使用数据集并经常参考Table[0],虽然我了解在访问之前检查数据集的表的防御性编码实践Table[0],但在过去从来不是问题。某个页面会在一秒钟内正常加载,然后在下一秒钟会丢失其数据驱动组件之一。只是看看这是否为任何人敲响了警钟。

更多细节:这次我使用了不同的构建服务器,虽然我认为两者的编译器设置是相同的,但我很难想到有一个开关可以让我的 50% 的数据库调用在没有表的情况下返回。我也将项目切换到 VS 2008,但是当我切换回 VS 2005 时恢复了所有这些更改。我注意到构建的程序集有一个新的MyLibrary .XmlSerializers.dll,它不习惯,但我也无法想象这是造成所有麻烦的原因。(它也不会因调用MyLibrary而失败,或者至少不会超过任何其他时间。)

更新添加:我发现麻烦的构建是“发布”构建,其中工作构建被编译为“调试”。 这能解释吗?

在这些更改修复它之前回滚到构建。(重新启动 SQL Server,我们之前尝试过的步骤没有。)

问题似乎也是基于负载的——这在我们的集成和 QA 环境中毫无问题地巡航,甚至我们的冒烟测试环境——指向生产数据的环境——在轻负载下也很好。

这是否具有您过去可能见过的任何事物的显着特征?

sql-server asp.net dataset

3
推荐指数
1
解决办法
9591
查看次数

在任务窗格应用程序/office.js 中检索整个 Word 文档

在 Word 2013(桌面)和 office.js 中,我们看到一些围绕用户选择 ( GetSelectedDataAsync, SetSelectedDataAsync) 的功能,但没有任何功能可以让您查看整个 (OpenXML) 文档。我错过了什么吗?

ms-office openxml apps-for-office

2
推荐指数
1
解决办法
1531
查看次数

编辑web.config - 导致停机?

在我正在使用的网站上,我们有两类他们可以要求的更改.一方面,他们有一些我必须重建和重新部署的东西.他们将这些视为"停机时间"的变化,因为我们会显示一个漂亮的小闪屏,当我们回来时我们会彻底测试网站.

另一方面,他们要求我们进行一些文本更改,打开和关闭功能等,我们已将其隔离到web.config.我们提供在部署窗口内部或外部执行这些操作 - 我们只需编辑文件,检查更改是否正确,然后返回工作.

但客户端的一个聪明人指出,编辑web.config会回收应用程序池,这就是那里的停机时间.我从来没有注意到,但我认为这是正确的 - 当应用程序池不可用时,应用程序是"关闭".

但是持续多久?我不是要求您通过停机间隔来分析客户的舒适程度,但这是一个共同的观点吗?或者我们不应该担心web.config编辑是否伴随着应用程序停机的第二或两次?

asp.net iis web-config downtime

1
推荐指数
1
解决办法
1356
查看次数

由Adobe Reader丢失的Response.Stream输出(PDF)

在ASP.NET应用程序中,我使用iTextSharp(主要是PdfStamper)来填充PDF上的一些内容并将其发送给用户.以下代码位于OnClick事件中:

PdfReader r = new PdfReader(
  new RandomAccessFileOrArray(Request.MapPath(compatiblePdf)), null
);

ps = new PdfStamper(r, Response.OutputStream);
AcroFields af = ps.AcroFields;

af.SetField("ContactInfo[0]", o.mallName);
af.SetField("ClientName", string.Format("{0} {1}", c.firstName, c.lastName));
af.SetField("ClientEmail", c.emailAddress);
ps.FormFlattening = true;
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=Form.pdf");
ps.Close();
Response.End();
Run Code Online (Sandbox Code Playgroud)

因此,基本上,PdfReader获取文件,PdfStamper将PdfReader作为参数,并将其完成的PDF推送到Response.OutputStream.

问题是,使用IE和Adobe Reader,如果从文件对话框中选择"打开",Adobe Reader会抛出错误提示"无法找到文件".用户可以"保存"文件,甚至可以再次开始下载(在被问到时再次单击"打开")似乎可以正常工作.但是在一台永远不会下载文件的新机器上,Adobe Reader似乎错误地将文件放在临时文件或IE之间.

我现在只能想象一件事:Response.End()或许,应该,或许,Response.Close()或许整个事情应该Response.Flush()在它之前.但我不确定这会不会使问题变得更糟,而且我很难测试(因为,一旦你下载了一次文件,就不会再次抛出错误).

可能解决问题吗?我在标题中有什么问题吗?或者我还应该对Response/PdfStamper对象做些什么呢?

c# outputstream response itextsharp

0
推荐指数
1
解决办法
1994
查看次数