使用DataContext从LINQ查询填充DataTable的最快方法

我正在尝试运行linq查询,但我需要将结果作为数据表,因为我使用它来存储来自同一viewstate对象中的不同查询的记录。 下面的两个版本编译,但返回一个空集。 确切的错误是“值不能为空。参数名称:源” 。 (是的,我检查过有数据): MyDatabaseDataContext db = new MyDatabaseDataContext(conn); IEnumerable queryProjects = (from DataRow p in db.STREAM_PROJECTs.AsEnumerable() where p.Field(“STREAM_ID”) == StreamID select new { PROJECT_ID = p.Field(“PROJECT_ID”), PROJECT_NAME = p.Field(“PROJECT_NAME”) }) as IEnumerable; DataTable results = queryProjects.CopyToDataTable(); … //(from p in db.STREAM_PROJECTs.AsEnumerable() //where p.STREAM_ID == StreamID //select new //{ // p.PROJECT_NAME, // p.PROJECT_ID //}) […]

.Net控制在计算机之间改变大小

我有一个奇怪的问题,我需要弄清楚如何解决, 我花了最近几个星期在我的笔记本电脑上工作的项目,但是当我在其中一个工作电脑上打开程序时,很多控件都是错误的尺寸和重叠等等, 机器之间的差异是这样的: 笔记本电脑: Windows 7 Pro; 显示 – 1920 * 1040; Visiual Studio 2008; .net框架3.5 工作桌面: windows xp pro; 显示:1024 * 768; 视觉工作室2008; .net框架3.5; 更好地描述问题,我有一个面板,我设置为300px宽,其中有一个标签内部的日期和日期采用mm-DD-yyyy格式,使用arial和size 8字体。 在笔记本电脑上它完全适合,但在桌面上面板看起来更小,标签只显示文本的一半。 这只是众多问题中的一个,另一个是颜色系统。控制似乎是系统之间完全不同的颜色(虽然我认为这是一个win7 vs xp问题) 我该怎么做才能解决这个问题? 它是Windows版本的问题吗? (我的笔记本电脑上的vmware机器上有xp,所以我可以在其中进行编码和设计) 这是显示问题吗? – 对我来说这是一个很大的问题,因为我只有一台笔记本电脑,我认为这个问题可能导致我最近的Uni任务损失(我在笔记本电脑上编码,从未在桌面上打开,直到今天 – 所以不知道这个问题) 编辑:我找到了解决我的特殊问题的解决方案,我发现我的笔记本电脑在视觉障碍的dpi设置上工作了125%(不知道怎么样……)所以我把它重置回100%或96Dpi已经解决了我的问题,在与我认识的其他几位开发人员聊天之后,他们说他们倾向于设计96 dpi,同时在文本周围留下一点空白是安全的。 但是他们并不倾向于使用c#,主要是使用QT框架在c ++中编写代码。

C#数字常量

我有以下C#代码: byte rule = 0; … rule = rule | 0x80; 产生错误: 无法将类型’int’隐式转换为’byte’。 存在显式转换(您是否错过了演员?) [更新:问题的第一个版本错了……我误读了编译器输出] 添加强制转换并不能解决问题: rule = rule | (byte) 0x80; 我需要把它写成: rule |= 0x80; 这看起来很怪异。 为什么|=运算符与|=任何不同 运营商? 有没有其他方法告诉编译器将常量视为一个字节? @ Giovanni Galbo :是的,不是。 该代码处理外部设备中闪存的编程,逻辑上代表单个字节的存储器。 我可以稍后施展,但这似乎更明显。 我猜我的C传承太过分了! @ Jonathon Holland :’as’语法看起来更整洁但不幸的是看起来不起作用……它产生: as运算符必须与引用类型或可空类型一起使用(’byte’是不可为空的值类型)

JSON.NET DataContractJsonSerializer和Newtonsoft JSON序列化程序有什么区别

有人能帮我吗。 内置的JSON.NET DataContractJsonSerializer和Newtonsoft JSON序列化程序之间有什么区别? 我可以在Web API中使用其中一个是正确的,为什么我会选择一个?

在运行时动态选择要使用的.dll版本

我正在研究SharePoint的实用程序。 这是一个适用于SharePoint 2007和2010的应用程序。当我引用SharePoint.dll的12.0.0.0版本时,该应用程序适用于SharePoint 2007,但不适用于2010.如果我引用版本14.0.0.0 dll,然后该应用程序适用于2010年,但不适用于2007年。 通过使用以下代码查看文件系统,在路径(SharePoint 2007)或14(SharePoint 2010)中检查12,我可以轻松地告诉我需要使用哪个.dll。 System.IO.File.Exists( Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFiles) + @”\Microsoft Shared\web server extensions\14\ISAPI\Microsoft.SharePoint.dll”)); 在开发时,我在Visual Studio中进行引用,因此它可以在2007或2010中构建。我希望能够在两个版本的SharePoint上发布适用的应用程序。 因此,我需要一些方法来加载/使用任何.dll对运行应用程序的用户有意义。 如何在运行时动态选择和加载.dll?

在C#中的节点内搜索的XmlNode.SelectSingleNode语法

我想限制我搜索子节点在我当前节点内。 例如,我有以下代码: XmlNodeList myNodes = xmlDoc.DocumentElement.SelectNodes(“//Books”); foreach (XmlNode myNode in myNodes) { string lastName = “”; XmlNode lastnameNode = myNode.SelectSingleNode(“//LastName”); if (lastnameNode != null) { lastName = lastnameNode.InnerText; } } 我希望从foreach内部的当前myNode中搜索LastName元素。 发生的事情是找到的LastName始终来自第一个带有myNodes的节点。 我不想硬编码LastName的确切路径,而是允许它灵活地找到myNode的内部。 我原以为在myNode上使用SelectSingleNode方法会限制搜索只能在myNode的xml内容中,而不包括父节点。

C#中的Apple推送通知服务器端

我是.net的新手,在C#中做apn服务器端。 我正在使用下面的代码将消息推送到苹果服务器。 private void pushMessage() { int port = 2195; String deviceID = “4564c705 63b371aa 3811699e 1e4ac3d2 ba592b27 f2a5a613 d25cd035 xx213e54”; String hostname = “gateway.sandbox.push.apple.com”; // TEST //String hostname = “gateway.push.apple.com”; // REAL // @”cert.p12″; String certificatePath = HttpContext.Current.Server.MapPath(“Certi.p12”); //X509Certificate2 clientCertificate = new X509Certificate2(certificatePath, “”); X509Certificate2 clientCertificate = new X509Certificate2(System.IO.File.ReadAllBytes(certificatePath), “”, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | […]

用于ASP.NET MVC的Paypal IPN侦听器

PayPal GitHub上有很多代码示例,展示了如何以各种语言(php,VB,…)实现IPN监听器。 但是,ASP.NET MVC没有。 有人成功实施过吗? 或者,与其他代码示例类似,是否有实现它的首选/官方方式?

C#:List .ForEach(…)对普通foreach循环的任何好处?

我想知道为什么List.ForEach(Action)存在。 这样做有什么好处/差别: elements.ForEach(delegate(Element element){ element.DoSomething(); }); 过度 foreach(Element element in elements) { element.DoSomething();} ?

如何使用C#中的Reflection使用属性查找控制器? (或如何构建动态Site.Master菜单?)

也许在进入标题问题之前我应该​​备份并扩大范围…… 我目前正在ASP.NET MVC 1.0中编写一个Web应用程序(虽然我的PC上安装了MVC 2.0,所以我并不完全限于1.0) – 我已经开始使用标准的MVC项目了基本的“欢迎使用ASP.NET MVC”,并在右上角显示[Home]选项卡和[About]选项卡。 很标准,对吗? 我添加了4个新的Controller类,我们称之为“天文学家”,“生物学家”,“化学家”和“物理学家”。 附加到每个新控制器类的是[Authorize]属性。 例如,对于BiologistController.cs [Authorize(Roles = “Biologist,Admin”)] public class BiologistController : Controller { public ActionResult Index() { return View(); } } 这些[Authorize]标签自然限制哪些用户可以根据角色访问不同的控制器,但我想根据用户所属的角色在Site.Master页面的网站顶部动态构建一个菜单。 例如,如果“JoeUser”是角色“天文学家”和“物理学家”的成员,导航菜单会说: [主页] [天文学家] [物理学家] [关于] 当然,它不会列出“生物学家”或“化学家”控制器索引页面的链接。 或者,如果“JohnAdmin”是角色“Admin”的成员,则指向所有4个控制器的链接将显示在导航栏中。 好吧,你们大家都有了想法…现在回答真正的问题…… 从StackOverflow主题关于ASP.NET中动态菜单构建的答案开始,我试图理解如何完全实现它。 答案建议扩展Controller类(称之为“ExtController”),然后让每个新的WhateverControllerinheritance自ExtController。 我的结论是,我需要在这个ExtController构造函数中使用Reflection来确定哪些类和方法附加了[Authorize]属性来确定角色。 然后使用静态字典,将角色和控制器/方法存储在键值对中。 我想象它是这样的: public class ExtController : Controller { protected static Dictionary<Type,List> ControllerRolesDictionary; protected override […]