Tag: .net 2.0

如何使DataTable可枚举?

我不能在DataTable上使用AsEnumerable(),我使用的是C#3,但我只是针对2.0框架(LINQfunction是由LINQBridge提供的)。 有没有什么办法可以在不使用Select()的情况下使DataTable可枚举? bool isExisting = (bdsAttachments.DataSource as DataTable).Select().Any(xxx => (string)dr[“filename”] == filename); 更新: 我希望它看起来像这样: bool isExisting = (bdsAttachments.DataSource as DataTable).AsEnumerable().Any(xxx => (string)dr[“filename”] == filename); 我得知,DataTable的Select方法返回一个副本,我想只使用AsEnumerable,问题是我只是针对2.0框架,System.Data.DataSetExtensions不可用 顺便说一下,我试过这个: http : //cs.rthand.com/blogs/blog_with_righthand/archive/2006/01/15/284.aspx ,但有编译错误。

如何使用Not in datatable.select

我有一个DataTable(Ado.Net),其列为’Status’。 此列包含值(在每个记录中) [ ‘红’, ‘绿’, ‘蓝’, ‘黄’, ‘白’, ‘OtherColors’] 我想选择状态值不是红色,绿色,蓝色的所有行 使用我提议的标准选择数据的filter表达式是什么样的。 所以我想要在sql查询中使用一些东西(WHERE Status NOT IN(’Red’,’Green’,’Blue’) 注意:这个项目运行.NET 2.0我不能使用linq

调用new SqlConnection()挂起程序

这个让我难过。 我甚至没有尝试连接数据库。 当这段代码到达我实例化一个新的SqlConnection对象的行时,它就会挂起,而不是抛出exception或任何东西。 我已经尝试过为2.0编译它。 3.5和4.0,它们都挂了。 当然它也适用于我的机器和你的机器。 但我试图在Windows Server 2008 x64服​​务器上运行此代码,它不会让步。 // example.cs using System; using System.Data; using System.Data.SqlClient; public class MainClass { public static void Main(string[] args) { Console.WriteLine(“start”); SqlConnection conn = new SqlConnection(); // hangs here Console.WriteLine(“finish”); // never makes it here. } } 编译(2.0):c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ csc.exe […]

渲染半透明/透明叠加

我需要一种快速的方法来在支持透明度的屏幕上绘制叠加层。 我做了很多搜索,找到了一个可能的解决方案(有自己的问题)和另一个不符合我要求的解决方案; 特别是透明支持。 我将从后者开始,然后触摸前者。 解决方案1 使用带有TransparencyKey的无边框表单,这是我发现的最有用的解决方案之一。 这个解决方案的工作原理是使用一个新的Form,让它无边框,将背景设置为类似Colour.White ,并将TransparencyKey设置为相同的颜色,将其设置为全屏和最顶层,并可能设置一些其他选项以使其不可见鼠标和键盘。 该解决方案的问题在于它不支持透明度; 它只会“剔除”与TransparencyKey 完全相同的颜色,因此,即使是最微小的差异,也会显示出在屏幕外面有半透明物体的想法。 解决方案2 使用P / Invoke和GDI +获取( GetDC & Graphics.FromHdc ),实际绘制,然后释放( ReleaseDC )桌面。 它的function很好,不幸的是,但是存在一些问题。 首先; 调用它一次显然只会画一次,因此如果画面完全刷新后它会消失,我不明白如何解决这个问题,如果这是最好的解决方案,我肯定需要帮助这个问题。 第二; 使用半透明的Brush和FillRectangle这种方法GDI +非常慢,我老实说不能怪它,但我要求它做得很快; GDI +显然无法满足的要求。 结论; 我需要一种在具有透明度支持的屏幕上绘制叠加层的方法,如果第二种方法是我应该使用的方法,我怎么能用半透明刷子绘制得足够快以至于它不是问题我怎么能让它更新呢屏幕刷新后它不会消失,如果不是我应该使用的方法,请指定我应该使用的方法。

使用xsd.exe生成类的可空值

我一直在使用xsd.exe生成一个用于反序列化XML的类。 我在源xsd中有十进制值,这是不需要的: xsd生成的类生成以下代码: private decimal balanceField; [System.Xml.Serialization.XmlAttributeAttribute()] public decimal Balance { get { return this.balanceField; } set { this.balanceField = value; } } 我注意到它不可空。 我如何生成可为空的字段,如下所示: private decimal? balanceField; [System.Xml.Serialization.XmlAttributeAttribute()] public decimal? Balance { get { return this.balanceField; } set { this.balanceField = value; } }

WebService添加布尔参数时消耗的WCF?

我在VS2008中创建了默认的WCF服务。 它被称为“Service1” public class Service1 : IService1 { public string GetData( int value ) { return string.Format(“You entered: {0}”, value); } public CompositeType GetDataUsingDataContract( CompositeType composite ) { if ( composite.BoolValue ) { composite.StringValue += “Suffix”; } return composite; } } 它工作正常,接口是IService1: [ServiceContract] public interface IService1 { [OperationContract] string GetData( int value ); [OperationContract] CompositeType […]

完成后,Web服务中的单独线程

如果在我道歉之前已经问过这个,这是.NET 2.0 ASMX Web服务,那么我的道歉= D 仅公开Web服务的.NET应用程序。 每天大约1000万条消息在多个IIS服务器之间进行负载平衡。 每个传入的消息都是XML,传出的消息是XML。 (XMLElement)(我们有强大的服务器,运行类固醇)。 我有一个SLA,所有消息都在X秒内处理。 此过程中的一个function,链接方法,现在需要10-20秒,每个事务都需要它,但是在Web服务返回结果之前发生它并不重要。 因此,我提出了将其抛弃到另一个线程的建议,但现在意识到我的话语和他们背后的热心开发者可能还没有完全想到这一点。 以下示例在左侧显示当前流量。 在右边正在尝试什么 实际上我正在寻找的是让Web服务产生一个长期运行(10-20秒)的线程,即使在Web服务完成后也会执行该线程。 实际上,这是有效的: Thread linkThread= new Thread(delegate() { Linkmembers(GetContext(), ID1, ID2, SomeOtherThing, XMLOrSomething); }); linkThread.Start(); 使用它我们在开发盒上将时间从19秒减少到2.1秒,这是相当可观的。 我担心随着流量的增加,如果供应商/外部方决定限制我们,IIS可能会决定在完成处理之前回收/终止这些线程。 我同意我们的解决方案可能不是“最好的”但是我们没有时间在Queue系统或其他Windows服务中构建来处理这个问题。 有一个更好的方法吗? 有什么需要考虑的警告吗? 谢谢。

用于Excel克隆的正确数据结构

假设我正在使用C#中的Excel克隆。 我的网格表示如下: private struct CellValue { private int column; private int row; private string text; } private List cellValues = new List(); 每次用户添加文本时,我只需将其打包为CellValue并将其添加到cellValues中。 给定一个CellValue类型,我可以在O(1)时间内确定它的行和列,这很好。 但是,给定一个列和一行,我需要循环遍历整个cellValues以查找该列和行中的文本,这非常慢。 另外,给定一个文本,我也需要遍历整个事情。 是否有任何数据结构我可以在O(1)时间内完成所有3个任务? 更新:通过一些答案,我不认为我找到了一个我喜欢的答案。 我可以吗: 不保留2个以上的CellValue副本,以避免同步它们。 在C世界中,我会很好地使用指针。 可以动态添加行和列(与Excel不同)。

在流畅的界面中实现条件

我一直在尝试为我的系统中的一组规则实现流畅的界面。 我想要完成的是这个 TicketRules .RequireValidation() .When(quartType => quartType == QuartType.Before).TotalMilageIs(64) .When(quartType => quartType == QuartType.After).TotalMilageIs(128); 但是,我无法实现有条件的方式。 目前,我需要在此片段中调用When()两次: rules.When(param => param.Remarque == “Test”).TotalMilageIs(100); rules.When(param => param.Remarque == “Other”).TotalMilageIs(50); var params1 = new AddTicketParameters() { Remarque = “Test” }; var params2 = new AddTicketParameters() { Remarque = “Other” }; rules.ExecuteWith(params1); Assert.That(ticket.TotalMilage, Is.EqualTo(100)); rules.ExecuteWith(params2); Assert.That(ticket.TotalMilage, Is.EqualTo(50)); 我的TicketRules类看起来像这样: [EditorBrowsable(EditorBrowsableState.Never)] public […]

行号不正确的exception错误消息

当在Asp.Net网页中抛出exception时,会显示一条错误消息,其中包含完整的堆栈跟踪。 示例如下: 堆栈跟踪: IndexOutOfRangeException:索引超出了数组的范围。 MyNameSpace.SPAPP.ViewDetailsCodeBehind.LoadView()+5112 MyNameSpace.SPAPP.ViewDetailsCodeBehind.Page_Load(Object sender,EventArgs e)+67 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+13 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+43 System.Web.UI.Control.OnLoad(EventArgs e)+98 …… 问题是显示的行号与我的代码中引发exception的行不对应。 在上面的例子中,堆栈显示行号5111,但我的.cs文件后面的代码只有250行! aspx页面存储在SharePoint站点中,带有代码的程序集已部署到GAC。 另外,我已经在Debug模式下编译了。 鉴于上面的设置,我如何找出代码中的哪一行导致exception? strelokstrelok指出的澄清: 在发布模式下,exception前面的数字不是代码行。 相反,它是本机编译代码的偏移量,对人类没有任何意义。 更多相关信息: http : //odetocode.com/Blogs/scott/archive/2005/01/24/963.aspx 在调试模式下 ,PDB文件将自动将本机代码偏移量映射到代码中的.cs行,显示的数字将是代码中的相应行。