从List 返回字符串的最优雅方式

什么是从列表返回字符串最优雅的方法ok,是的,我知道我可以做类似的事情 public string Convert(List something) { var s = new StringBuilder(); foreach(int i in something) s.AppendFormat(“{0} “, i); return s.ToString(); } 但我确定有一种方法可以用lambdas做到这一点我也尝试追加到一个字符串构建器但是这没有做什么预期

C#中的FlowDocument内存问题

我目前正在尝试处理释放FlowDocument资源的问题。 我正在加载一个rtf文件并将其放入带有TextRange.Load的FlowDocument中。 我注意到,在它执行此操作后,它会保留这些资源,GC不会收集它。 我已经运行了一个内存分析器,并且已经看到这是真的。 我还把它缩小到我加载实际将rtf放入FlowDocument。 如果我不这样做,那么一切都很好。 所以我知道这是问题所在。 我希望对如何解决这个问题提供一些指导。 这是加载rtf和所有内容的代码。 我已经评论了所有其他代码,甚至把它放在自己的范围内,并尝试了GC.Collect()。 任何帮助是极大的赞赏。 编辑:这是我目前的完整代码。 除了最基本的要素之外,我已经取出了其他所有东西来让它运行起来。 问题仍然存在。 如您所见,FlowDocument和TextRange未在其他任何地方引用。 public LoadRTFWindow(string file) { InitializeComponent(); using (FileStream reader = new FileStream(file, FileMode.Open)) { FlowDocument doc = new FlowDocument(); TextRange range = new TextRange(doc.ContentStart, doc.ContentEnd); range.Load(reader, System.Windows.DataFormats.Rtf); } GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); } 我发现这篇文章 ,我希望能帮助我解决我的问题,但我没有运气。 非常感谢任何类型的帮助。 谢谢。 编辑:我想我应该提到我检查这个的主要方式。 我打开了Windows任务管理器,正在观察应用程序进程正在使用的内存使用情况。 当我运行上面的代码时,应用程序在执行TextRange.Load()时会从40,000K变为70,000K(这是一个400页的大型RTF),一旦完成,它就会下降到61,000K并保持在那里。 我的期望是它会回落到40,000K或者至少非常接近它。 正如我之前提到的,我使用了一个内存分析器,看到有很多段落,Run..ect。 […]

Windows窗体应用程序中的Dock,Anchor和Fluid布局

所以,我被要求重新设计几年前我写的旧应用程序。 基本上,没有什么需要改变,除了客户希望它更流畅,并且它必须是全屏的(没有可见的“窗口”)即没有Titlebar,只是一个无边框全屏窗口。 什么是确保一切都保持流畅的最佳方法,我的意思是我们如何确保一切都出现在它应该的位置,因为你知道,不同的分辨率,显示器尺寸等? 这在网页/ CSS中很容易,但这不是我以前做过的。 大多数控件将在运行时以编程方式创建,具体取决于执行的操作等。我将如何完成这样的布局? 基本上我希望能够全屏显示,不知道他们的显示器有多大,或者他们使用的是什么分辨率。

关闭SqlConnection和SqlCommand c#

在我的DAL中,我写这样的查询: using(SQLConnection conn = “connection string here”) { SQLCommand cmd = new (“sql query”, conn); // execute it blah blah } 现在我发现我没有明确关闭SQLCommand对象。 现在我知道’using’块将处理SQLConnection对象,但这还会处理SQLCommand对象吗? 如果不是我有一个严重的问题。 我必须在SQLCommand上使用’使用’成千上万行代码,或者在数百种方法上执行cmd.Close()。 请告诉我,如果使用或关闭命令将提供更好的Web应用程序内存管理?

.Net Core如何实现SQLAdapter ./ DataTable函数

我有一个简单的.Net Framework例程,它运行一个查询并返回一个DataTable对象。 我需要将其移植到.Net Core,但我推断不支持SQLAdapter和DataTable SqlConnection con = new SqlConnection(m_ConnectString); SqlCommand cmd = new SqlCommand(strQuery); SqlDataAdapter sda = new SqlDataAdapter(); // assign the transaction and connection to the command object cmd.Connection = con; sda.SelectCommand = cmd; DataTable dt = new DataTable(); // execute query and soak up results sda.Fill(dt); return dt; 任何人都可以建议我如何使用支持的内容重新实现此代码? 谢谢

你能从.NET中的JSON实例化一个对象实例吗?

由于Object Initializers与JSON非常相似,现在.NET中有匿名类型。 能够获取字符串(例如JSON)并创建表示JSON字符串的匿名对象会很酷。 使用对象初始值设定项创建匿名类型: var person = new { FirstName = “Chris”, LastName = “Johnson” }; 如果您可以传入Object Initializer代码的字符串表示(最好是类似JSON)来创建具有该数据的匿名类型的实例,那将是非常棒的。 我不知道是否可能,因为C#不是动态的,并且编译器实际上将Object Initializer和Anonymous Type转换为可以运行的强类型代码。 本文将对此进行说明。 也许使用JSON并使用它创建键/值Dictionary的function将最有效。 我知道你可以在.NET中将一个对象序列化/反序列化为JSON,但我想要的是一种创建一个基本上松散类型的对象的方法,类似于JavaScript的工作方式。 有谁知道在.NET中这样做的最佳解决方案? 更新:太清楚我为什么要问这个问题的背景……我在考虑C#如何在语言层面(可能)更好地支持JSON,而我正试图想办法今天可以做到的概念原因。 所以,我想我会把它发布在这里开始讨论。

WPF Toolkit Datagrid – 如何关闭选择?

我在WPF中有一个数据网格,我绑定到一个对象。 我有一个DataGridCheckBoxColumn,我希望用户能够通过并勾选他们想要的那些。 问题是他们必须点击两次,一次选择然后再次检查/取消选中。 你究竟怎么把它关掉,我一直在寻找方法来寻找答案。 datagrid具有SelectionMode和SelectionUnit属性 – 两者都不接受’none’或’go away’ 任何帮助表示赞赏! 我的代码在下面供参考

在C#.NET中启动和停止进程

我正在尝试编写一个简单的程序,它有两个方法,一个启动一个进程,一个启动同一个进程。 如: public Process StartProc(string procname) { Process proc = new Process(); proc.StartInfo.FileName = procname; proc.Start(); return proc; } public void StopProc(Process proc) { proc.Close(); } 有可能这样做吗?

如何在C#中进行unit testing中的MapPath

我想在unit testing中加载外部XML文件,以测试该XML上的一些处理代码。 如何获取文件的路径? 通常在网络应用程序中我会这样做: XDocument.Load(Server.MapPath(“/myFile.xml”)); 但显然在我的unit testing中我没有引用Server或HttpContext,所以如何映射路径以便我不必指定完整路径? 更新: 我只想说明我实际测试的代码是针对XML解析器类的,类似于: public static class CustomerXmlParser { public static Customer ParseXml(XDocument xdoc) { //… } } 所以为了测试这个,我需要解析一个有效的XDocument。 正在测试的方法不会访问文件系统本身。 我可以直接在测试代码中从String创建XDocument,但我认为从文件中加载它会更容易。

asp.net/C#中的静态变量

我在我的Web应用程序项目中使用了大量的静态变量。 现在我从一些文章中读到它是整个项目的全局变量,静态变量中的数据可以被其他用户共享或覆盖(我的意思是它不是用户特定的或特定于会话的)。 那么通常的编程习惯是不在正常的Web应用程序开发中使用静态变量吗? 是否完全不使用静态变量,就像GOTO语句/关键字一样,这意味着使用它们有很多限制,最好不要使用它们? 那么在什么情况下我们使用静态关键字? 那么我有这个要求,特定的变量必须在特定的webform.aspx.cs中初始化一次,并且范围必须仅限于那个特定的.aspx.cs和已经登录的特定用户? 我如何满足这一要求? 如果可能,任何人都可以用代码说明这一点吗