Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。

10
LINQ按空列排序,其中顺序升序,并且空值应为最后
我正在尝试按价格对产品列表进行排序。 结果集需要按列从低到高的价格列出产品LowestPrice。但是,此列可以为空。 我可以按照降序对列表进行排序,如下所示: var products = from p in _context.Products where p.ProductTypeId == 1 orderby p.LowestPrice.HasValue descending orderby p.LowestPrice descending select p; // returns: 102, 101, 100, null, null 但是我不知道如何按升序排序。 // i'd like: 100, 101, 102, null, null
141 c#  linq  sorting 

10
在C#中获取上个月的第一天和最后一天的日期
我想不出一个简单的一两个班轮就能得到前几个月的第一天和最后一天。 我正在LINQ上实现一个调查Web应用程序,他们为此提出了新要求。 该调查必须包括上个月的所有服务请求。因此,如果是4月15日,则需要所有3月的请求ID。 var RequestIds = (from r in rdc.request where r.dteCreated >= LastMonthsFirstDate && r.dteCreated <= LastMonthsLastDate select r.intRequestId); 没有切换,我简直想不起来日期。除非我是盲目的并且忽略了这样做的内部方法。
140 c#  .net  datetime  date 

17
Visual Studio 2015破碎的剃刀智能感知
在安装并修复VS2015实例后,我仍然无法在我的MVC视图中使用智能感知(服务器端)。第一次在会话中打开.cshtml文件并发送到Activitylog文件时,我会通过消息提示收到警报。在ActivityLog.xml(简短版本)中检索到的错误消息: System.ArgumentException:已添加项目。输入字典:'RazorSupportedRuntimeVersion' 这是完整版本: System.Reflection.TargetInvocationException:调用的目标引发了异常。---> System.ArgumentException:已添加项目。输入字典:'RazorSupportedRuntimeVersion'要添加的键:在System.Collections.Hashtable.Insert(对象键,对象nvalue,布尔值添加)在System.Collections.Hashtable.Add(对象键,对象值)在System.Collections.Specialized.HybridDictionary.Add处添加“ RazorSupportedRuntimeVersion” Microsoft.VisualStudio.Utilities.PropertyCollection.AddProperty(对象键,对象属性)上的(对象键,对象值) Microsoft.Html.Editor.ContainedLanguage.Razor.RazorErrorTagger..ctor(ITextBuffer End。内部异常堆栈跟踪---在System。System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr,Binder活页夹,Object []参数,CultureInfo文化)在System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr)处运行(RuntimeMethodHandle.InvokeMethod ,活页夹活页夹,Object [] args,CultureInfo文化,System.Activator.CreateInstance(类型类型,BindingFlags bindingAttr,活页夹活页夹,Object [] args,CultureInfo文化,Object [] ActivationAttributes)处的Object [] activationAttributes,StackCrawlMark&stackMark) Microsoft.Html.Editor.ContainedLanguage.Common.ContainedCodeErrorTaggerProvider中的System.Activator.CreateInstance(类型,Object []参数),Microsoft.VisualStudio.Text.Tagging.Implementation.TagAggregator中的1.CreateTagger [T](ITextBuffer textBuffer)1.GatherTaggers(ITextBuffer textBuffer) 如果有帮助,我可以对字体进行一些自定义设置,并安装Web Essentials,Bundler&Minifier和Web Compiler扩展。 更新:打开我现有的Web应用程序或从头开始创建一个全新的Web应用程序时都会发生。在同一台计算机上还安装并运行了一个VS2013实例。 从上面的图片中可以看到,我根本没有智能感知,也没有任何代码着色。 关于如何解决它的任何线索?提前致谢。

17
C#switch语句限制-为什么?
编写switch语句时,在case语句中可以打开的内容似乎有两个限制。 例如(是的,我知道,如果您正在做这种事情,这可能意味着您的面向对象(OO)架构很不稳定-这只是一个虚构的示例!), Type t = typeof(int); switch (t) { case typeof(int): Console.WriteLine("int!"); break; case typeof(string): Console.WriteLine("string!"); break; default: Console.WriteLine("unknown!"); break; } 在这里,switch()语句以“期望整数类型的值”失败,而case语句以“期望常数的值”失败。 为什么要设置这些限制?其基本依据是什么?我看不出有任何理由switch语句具有屈服于只有静态的分析,以及为什么值在接通必须是完整的(即原语)。理由是什么?

2
在ReSharper中禁用C#6.0支持
在使用ReSharper时,它建议“为此项目启用C#6.0支持”。我愚蠢地单击了它,现在如广告所示,它为我提供了有关C#6.0的建议-然后由于我没有在该项目中使用C#6.0而给了我错误。 如何禁用C#6.0支持,将其恢复为以前的状态?(最好不必单独忽略特定建议)
140 c#  resharper 


6
如何优雅地处理时区
我的网站所在的时区与使用该应用程序的用户所在的时区不同。除此之外,用户可以具有特定的时区。我想知道其他SO用户和应用程序如何实现这一目标?最明显的部分是在数据库内部,日期/时间存储在UTC中。在服务器上时,所有日期/时间都应以UTC处理。但是,我看到了我要克服的三个问题: 以UTC格式获取当前时间(通过轻松解决DateTime.UtcNow)。 从数据库中提取日期/时间并将其显示给用户。有潜在的很多人要求在不同的视图上打印日期。我在考虑视图和控制器之间的某些层可以解决此问题。或启用自定义扩展方法DateTime(请参见下文)。主要缺点是,在视图中使用日期时间的每个位置,都必须调用extension方法! 这也会增加使用类似 JsonResult。您不能再轻易打电话了Json(myEnumerable),那一定是Json(myEnumerable.Select(transformAllDates))。也许AutoMapper可以在这种情况下提供帮助? 从用户处获取输入(本地到UTC)。例如,发布带有日期的表单将需要将日期转换为UTC之前的日期。首先想到的是创建一个自定义ModelBinder。 这是我认为在视图中使用的扩展: public static class DateTimeExtensions { public static DateTime UtcToLocal(this DateTime source, TimeZoneInfo localTimeZone) { return TimeZoneInfo.ConvertTimeFromUtc(source, localTimeZone); } public static DateTime LocalToUtc(this DateTime source, TimeZoneInfo localTimeZone) { source = DateTime.SpecifyKind(source, DateTimeKind.Unspecified); return TimeZoneInfo.ConvertTimeToUtc(source, localTimeZone); } } 考虑到很多应用程序现在都是基于云的,因此我认为考虑到时区是一件很平常的事,因为服务器的本地时间可能与预期的时区有很大差异。 之前是否已经解决过这个问题?有什么我想念的吗?想法和想法深表赞赏。 编辑:为了消除一些混乱,我想添加一些更多的细节。现在的问题不是如何在数据库中存储UTC时间,而是更多关于从UTC-> Local和Local-> UTC开始的过程。正如@Max Zerbini指出的那样,将UTC-> Local代码放在视图中显然是明智的,但是使用的是DateTimeExtensions真正的答案吗?从用户那里获取输入信息时,接受日期作为用户的本地时间(因为这就是JS会使用的时间),然后使用a …

7
为什么数组实现IList?
请参阅System.Array类的定义 public abstract class Array : IList, ... 从理论上讲,我应该能够写点东西并开心 int[] list = new int[] {}; IList iList = (IList)list; 我也应该能够从iList调用任何方法 ilist.Add(1); //exception here 我的问题不是为什么我会得到异常,而是为什么Array实现了IList?

8
删除字符串中特定字符之后的字符,然后删除子字符串?
当这看起来很简单并且在字符串/字符/正则表达式上有很多问题时,我感到有些愚蠢,但是我找不到我真正需要的东西(除了另一种语言:在特定点之后删除所有文本)。 我有以下代码: [Test] public void stringManipulation() { String filename = "testpage.aspx"; String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue"; String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", ""); String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length - filename.Length); String expected = "http://localhost:2000/somefolder/myrep/"; String actual = urlWithoutPageName; Assert.AreEqual(expected, actual); } 我尝试了上述问题的解决方案(希望语法是一样的!),但是不行。我想先删除可以是任何可变长度的queryString,然后删除页面名称,也可以是任何长度。 我如何才能从完整的URL中删除查询字符串,以便此测试通过?
140 c#  .net  string 

10
C#3.0+中属性和字段之间的区别
Наэтотвопросестьответына 堆栈溢出нарусском:Длячегонужнысвойства? 我意识到这似乎是C#中的字段和属性之间的区别是什么的副本?但是我的问题(从我的角度来看)略有不同: 一旦我知道 我不会将我的课程与“仅适用于房地产的技术”结合使用,并且 我不会在getter / setter中使用验证代码。 有什么区别(样式/未来开发除外),例如设置属性时的某种控件? 之间是否还有其他区别: public string MyString { get; set; } 和 public string myString; (我知道,第一个版本需要C#3.0或更高版本,并且编译器确实会创建专用字段。)

17
显示表格而不会失去焦点?
我正在使用一个表单来显示通知(它显示在屏幕的右下角),但是当我显示此表单时,它会从主表单中夺走焦点。有没有一种方法可以显示这种“通知”形式而又不会失去重点?
140 c#  .net  winforms 




9
如何在ASP.NET Web API中设置下载文件名
在我的ApiController类中,我有以下方法可以下载服务器创建的文件。 public HttpResponseMessage Get(int id) { try { string dir = HttpContext.Current.Server.MapPath("~"); //location of the template file Stream file = new MemoryStream(); Stream result = _service.GetMyForm(id, dir, file); if (result == null) { return Request.CreateResponse(HttpStatusCode.NotFound); } result.Position = 0; HttpResponseMessage response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; response.Content = new …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.