C# – 带有OR子句的LINQ语句

我试图使用LINQ返回处于三种状态之一的任务列表。 这些州是: 10 – 完成11 – 不完整12 – 跳过 状态可通过名为“TaskStateID”的属性获得。 我可以在LINQ中执行此操作,只有一个状态,如下所示: var filteredTasks = from task in tasks select task; // Do stuff with filtered tasks string selectedComboBoxValue = GetFilterComboBoxValue(); if (selected ComboBoxValue == 3) { filteredTasks = filteredTasks.Where(p => p.TaskStateID == 10); // How do I use an ‘OR’ here to say p.TaskStateID == […]

如何在C#中使用XmlSerializer将字节数组序列化为XML?

假设我们有一个结构,它的数据由使用Marshal.PtrToStructure的非托管字节数组提供。 C#结构布局: [StructLayout(LayoutKind.Sequential, Size = 128, CharSet = CharSet.Ansi, Pack = 1)] public struct MNG_Y_Params { public byte Number; public byte Version; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] OliNumber; public byte InterfaceType; } 字节数组表示非托管代码中的(ascii)字符串。 此结构是另一个结构的成员(具有一些其他成员): public struct MyData { public int ID; public StructType structType; [XmlElement(ElementName=”MNG_Y_Params”)] public MNG_Y_Params y_params; [XmlElement(ElementName = “SimpleStruct2”)] public SimpleStruct2 ss2; […]

选择哪种C#方法重载?

为什么两个重载都匹配时调用generics方法? public static void method1(object obj) { Console.WriteLine(“Object”); } public static void method1(T t) { Console.WriteLine(“Type T”); } public static void Main(String args[]) { method1(“xyz”); //Will print “Type T”; } 这里不应该有任何冲突,对吧?

如何使用FileSavePicker保存现有的StorageFile?

我正在尝试将现有文件保存到另一个地方。 这是某种副本,但我想允许用FileSavePicker为用户选择新目的地。 这是我的代码: StorageFile currentImage = await StorageFile.GetFileFromPathAsync(item.UniqueId); var savePicker = new FileSavePicker(); savePicker.FileTypeChoices.Add(“JPEG-Image”,new List() { “.jpg”}); savePicker.FileTypeChoices.Add(“PNG-Image”, new List() { “.png” }); savePicker.SuggestedSaveFile = currentImage; savePicker.SuggestedFileName = currentImage.Name; var file = await savePicker.PickSaveFileAsync(); 之后,将创建文件,但它为空(0 KB)。 如何正确保存文件?

如果DateTime是不可变的,为什么以下工作?

我以为我理解了Immutable的意思,但我不明白为什么以下编译和工作: DateTime dt = DateTime.Now; Console.WriteLine(dt); 复制并粘贴下一部分几次 dt = DateTime.Now; Console.WriteLine(dt); Console.ReadLine(); 正如预期的那样,它会运行,当我按下回车键时,它会在下次显示…我认为这是不可能的,我需要创建一个新对象。 为什么允许/工作? 或者,这本书我的工作是错误的,而且DateTime不是不可变的(但是我已经在几个来源上读过这个)?

页面加载超时 – 使用C#的Selenium Webdriver

我正在使用Selenium 2.25 WebDriver 我遇到了在页面上找到元素的问题,有时我的测试用例能够找到元素,有时页面不会加载,而且由于页面加载,如果我在下面添加这个元素,它似乎正在工作: driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(2)); 我的问题是,我不想让我的代码散布上面的代码行,有没有办法让它在一个地方集中化? 任何帮助将不胜感激,谢谢!

(C#)为什么Visual Studio说它是一个对象,而GetType说它是一个Func ?

C#新手问题在这里。 以下代码(取自Christian Gross,Apress的书“C#From Novice to Professional”)给出了一个错误: worksheet.Add(“C3”, CellFactories.DoAdd(worksheet[“A2”], worksheet[“B1”])); 原因是方法DoAdd()不接受给定的参数。 public static Func DoAdd(Func cell1, Func cell2) {…} VS声称上面的方法调用中的两个args都是object类型,而该方法只接受Func 。 但是两个工作表元素的值都是Func类型: worksheet.Add(“A2”, CellFactories.Static(10.0)); 这个Static方法只返回给定值: public static Func Static(object value) { return () => value; } // return type= Func 当我将worksheet[“A2”]为Func ,代码确实有效。 但有些事情我不明白。 对象实例的类型是Func 。 我已经使用GetType()方法来查看此certificate,并将原始元素的对象类型与强制转换对象的对象类型(可接受)进行比较: Console.Writeline(worksheet[“A2”].GetType()); // now cast to the correct type (why can’t […]

c#中的Google协议缓冲区

我们正在考虑使用Google的Protocol Buffers来处理c ++应用程序和ac#应用程序之间的序列化。 我的问题是,我为c#找到了几个不同的修改。 两者看起来都不错,但是,有没有人知道两者之间有什么不同(如果有的话) protobuf网 jskeet / dotnet-protobufs

如何在ASP.NET Core中validationDI容器?

在我的Startup类中,我使用ConfigureServices(IServiceCollection services)方法来设置我的服务容器,使用来自Microsoft.Extensions.DependencyInjection的内置DI容器。 我想在unit testing中validation依赖图,以检查是否可以构造所有服务,这样我就可以修复在unit testing期间丢失的任何服务,而不是让应用程序在运行时崩溃。 在以前的项目中,我使用了Simple Injector,它对容器有一个.Verify()方法。 但是我无法找到类似ASP.NET Core的东西。 是否有任何内置(或至少推荐)的方法来validation是否可以构建整个依赖图? (我能想到的最愚蠢的方式就是这样,但由于框架本身注入的开放式generics,它仍然会失败): startup.ConfigureServices(serviceCollection); var provider = serviceCollection.BuildServiceProvider(); foreach (var serviceDescriptor in serviceCollection) { provider.GetService(serviceDescriptor.ServiceType); }

WPF:Slider不会引发MouseLeftButtonDown或MouseLeftButtonUp

我试过这个XAML: 这个C#: private void slider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { sliderMouseDown = true; } private void slider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { sliderMouseDown = false; } sliderMouseDown变量永远不会更改,因为从不引发MouseLeftButtonDown和MouseLeftButtonUp事件。 当用户在滑块上按下鼠标左键以将bool值设置为true时,如何使用此代码,并且当鼠标启动时,bool设置为false?