我正在尝试将一些.exe和.dll文件嵌入到我的应用程序中(只需将所需文件包含到我的项目中,右键单击它们并将Build Action更改为"Embedded Resource").这是我提取的代码:
private void ExtractTo(string path){
string filename = "MyNamespace.Resources.MyEmbeddedEXEfile.exe";
Assembly asm = Assembly.GetExecutingAssembly();
string[] resourceNames = asm.GetManifestResourceNames();
if(resourceNames.Contains(filename)){
Stream s = asm.GetManifestResourceStream(filename);
byte[] buffer = new byte[s.Length];
File.WriteAllBytes(path + "\\MyEXEfile.exe", buffer);
}
}
Run Code Online (Sandbox Code Playgroud)
它似乎运行良好,嵌入式文件被提取到传入的路径,它与我在项目中包含的文件大小相同,并作为资源嵌入.但是在点击提取的EXE文件后,它似乎已损坏,显示一个错误对话框,说明" 此文件的版本与您正在运行的Windows版本不兼容.检查计算机的系统信息,看看是否需要程序的x86(32位)或x64(64位),然后联系您的软件发行商. "好吧,我正是该软件的发布者=)).
我使用的是Windows 7 Ultimate 64位.原始文件(我选择嵌入)是一个32位文件.我也试过一个dll文件,提取的dll文件也不能像原来的那样工作.
你能指出我的代码中提取资源有什么问题,或者我把它作为资源嵌入后文件被破坏了吗???
非常感谢您的帮助.谢谢.
我听说有人说case_sensitive_like启用可以使查询更快.如果是这样,如果我们有以下2个查询选择不区分大小写的数据,您认为如何:
SELECT * FROM MyTable WHERE MyColumn LIKE '%Value%'
假设case_sensitive_like关闭(默认),这将返回相同的结果无论ValueIS value,vAlue,valUE,...
PRAGMA case_sensitive_like = ON;
SELECT * FROM MyTable WHERE LOWER(MyColumn) LIKE LOWER('%Value%');
这也将返回相同的结果无论ValueIS value,vAlue,valUE,...
我希望#2的表现优于#1.
请帮忙.谢谢.
PS:我认为#2的性能可以通过首先使用小写字符串的值声明值的常量来改进,或者可以在传递查询之前处理(例如在C#代码中).
在.NET库和许多第三方库中,我可以看到有一些关于如何更改内部(私有)成员值的约定,它们支持属性(.NET属性)或方法(这些在java中常用)作为Setters和Getters)或两者兼容程序员.
我想知道何时(以及为什么)使用属性,方法或两者.例如,可以使用Visible属性(在Windows窗体中)或调用方法Show()或Hide()来更改控件的可见性.有一些值(我知道有一些内部/私有值)只能通过调用方法(如setter)来更改.在设计我自己的控件时,类我有点犹豫选择属性或方法(或支持两者?),事实上,选择其中任何一个也是可以的(Java是一个仅使用方法的例子).我知道Properties相对于方法(作为getter和setter)的优势,但如果是这样的话,为什么我们必须在某些情况下使用方法,它们会被呈现给程序员甚至替换属性.我对此感到有点困惑,对我而言(正如我所说),我只使用方法时感觉很好(就像我在java中一样,它并不是那么糟糕:).
我想知道你的经历以及你的会议.我喜欢遵循编程中的标准约定(针对每个编程环境和每种语言)来区分它们.有些人发明了自己的风格,这些风格对于其他程序员来说有点难以理解,例如在C#中使用C++命名约定(甚至PHP命名约定?)?对我来说有点奇怪,抱歉.
请分享,谢谢......
我需要在排序的整数列表中获取彼此相等的所有最大元素的索引.
所以给出这个清单
elements: {1 , 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 12, 13, 13, 13}
index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
^ ^ ^
Run Code Online (Sandbox Code Playgroud)
我会得到这个输出
{16,17,18}
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经有了
list.Select((x, i) => new {x, i})
Run Code Online (Sandbox Code Playgroud)
要获得指数,但我不能使用OrderBy()带有First()或Single()因为我需要的所有元素最多人指数,不只是极顶一个.
是否有一种优雅的方法来实现这一点(使用LINQ或其他方式)?
我需要在Linq上排名.
class test
{
public int Id { get; set; }
public string Destination { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的数据如下:
ID Destination
1 Miami
2 Miami
3 Boston
4 Atlanta
Run Code Online (Sandbox Code Playgroud)
我想要的是这个:
ID Destination Value
1 Miami Miami1
2 Miami Miami2
3 Boston Boston1
4 Atlanta Atlanta1
Run Code Online (Sandbox Code Playgroud)
如何通过Linq得到这个?