我正在使用DataTable,我需要将它们转换为CSV文件格式.我正在使用的大多数表都有超过50,000条记录,所以我试图最小化转换它们所需的时间.
这是我目前的方法:
public static string table_to_csv(DataTable table)
{
string file = "";
foreach (DataColumn col in table.Columns)
file = string.Concat(file, col.ColumnName, ",");
file = file.Remove(file.LastIndexOf(','), 1);
file = string.Concat(file, "\r\n");
foreach (DataRow row in table.Rows)
{
foreach (object item in row.ItemArray)
file = string.Concat(file, item.ToString(), ",");
file = file.Remove(file.LastIndexOf(','), 1);
file = string.Concat(file, "\r\n");
}
return file;
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以提高这种方法的效率吗?我欢迎您提出任何修改和想法!
我正在使用.iss脚本在Inno Setup Compiler中构建一个exe文件.我需要将一些node_modules打包到这个应用程序中,所以我有一行看起来像这样:[Files]
Source: "{#SourcePath}Encore.Warehouse.UI\bin\Warehouse_Release\warehouse\*"; \
DestDir: "{app}\warehouse"; Flags: ignoreversion recursesubdirs createallsubdirs
Run Code Online (Sandbox Code Playgroud)
编译时,我收到此错误:
这是编译器输出:
所以,它似乎运行正常,直到它中止.我最初的想法是,browser.js它不存在,但经过双重检查,情况并非如此.此外,我在源路径中使用通配符,因此编译器知道该文件存在,但似乎在压缩它时遇到问题.
另一个可能导致问题的是文件路径长度.由于嵌套依赖性,节点模块通常最终会出现荒谬的文件路径长度.在这种情况下,路径长度为260.假设这是造成问题的原因,有什么方法可以绕过它吗?
我正在尝试将Apache Cordova应用程序部署到插入机器的Android设备上.但是,在尝试部署时,我收到以下错误:
无法部署到Android设备,未找到连接的设备.如果您最近连接了设备,则可能需要等待几秒钟才能识别.
据我所知,我已启用了部署到设备所需的所有开发人员设置.我已经尝试拔掉并重新插入,等待几秒钟,但无济于事.
我已经尝试过更改连接模式(HTC同步,磁盘驱动器等),但这并没有什么不同.
我正在尝试部署的Android设备已经很老了(v3.35.61.3),所以我甚至尝试部署到运行最新版本的android的不同Android设备,但同样的问题也出现了.
这让我相信Visual Studio没有拿起任何连接的Android设备是一个问题.也许我错过了一个安装包?
我需要从C#应用程序启动Node.js服务器,这就像server.js在Node.js控制台中运行脚本一样简单.但是,我并不完全确定如何实现这一目标.
这是我到目前为止所研究的内容:
在Node.js安装中,有一个名为的文件C:\Program Files (x86)\nodejs\nodevars.bat,这是Node.js的命令提示符窗口.要启动服务器,我可能会使用以下步骤:
nodevars.bat文件.SendKeys 到新的进程控制台窗口以启动服务器.这种方法感觉有点脆弱.无法保证目标用户将Node.js安装在同一位置,同时向过程发送密钥可能不是理想的解决方案.
另一种方法可能是:
nodevars.bat.这似乎是一种更好的方法.但是,这里唯一的问题是nodevars.bat在新的控制台窗口中打开.
那么对于问题,有没有办法可以使用node.js安装中内置的功能启动node.js服务器脚本?也许发送论据node.exe?
我使用以下方法列出文件夹的内容:
private void TestFtp()
{
try
{
// List all of the files from FTP
FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create(new Uri("ftp://m3database/recover/"));
ftprequest.Credentials = new NetworkCredential("myusername1", "********");
ftprequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftprequest.UsePassive = false;
ftprequest.Proxy = null;
using (var resp = ftprequest.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());
MessageBox.Show(reader.ReadToEnd());
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
我通过FTP连接到单个Linux服务器.我使用的凭据myusername1和myusername2连接.
如果我使用myusername1凭据,我可以在使用此功能时列出目录内容,但是如果我使用myusername2它,则会出现以下错误:
远程服务器返回错误:(503)错误的命令序列.
我尝试过的事情:
ftprequest.KeepAlive = false.特殊情况是我的代码将myusername1在我的代码中未启用SSL的情况下连接使用.
综上所述:
myusername1myusername2 …我有以下场景:
public abstract class SomeBaseClass
{
public event EventHandler SomeEvent;
...
}
public class SomeClass : SomeBaseClass
{
public void DoSomething()
{
//TODO
if (SomeEvent != null)
SomeEvent(this, EventArgs.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
SomeBaseClass有一个需要在基类中调用的事件,但是不能直接从基类调用该事件.为了解决这个问题,我可以覆盖基类中的事件,如下所示:
public class SomeClass : SomeBaseClass
{
new public event EventHandler SomeEvent;
Run Code Online (Sandbox Code Playgroud)
我猜这很好,但我的问题是,是否存在某种通用方法或实施上述功能的良好实践?
事实上,无法从基类调用事件表明我不应该首先这样做,也许调用事件的责任应该只在于SomeBaseClass?
我试图遵循接口隔离和单一职责原则,但是我对如何将它们整合在一起感到困惑。
在这里,我有一个示例,其中有一些接口,我已将其拆分为更小、更直接的接口:
public interface IDataRead
{
TModel Get<TModel>(int id);
}
public interface IDataWrite
{
void Save<TModel>(TModel model);
}
public interface IDataDelete
{
void Delete<TModel>(int id);
void Delete<TModel>(TModel model);
}
Run Code Online (Sandbox Code Playgroud)
我稍微简化了它(有一些where条款妨碍了可读性)。
目前我正在使用SQLite ,但是,这种模式的美妙之处在于,如果我选择不同的数据存储方法(例如Azure),它有望让我有机会更好地适应变化。
现在,我对每个接口都有一个实现,下面是每个接口的简化示例:
public class DataDeleterSQLite : IDataDelete
{
SQLiteConnection _Connection;
public DataDeleterSQLite(SQLiteConnection connection) { ... }
public void Delete<TModel>(TModel model) { ... }
}
...
public class DataReaderSQLite : IDataRead
{
SQLiteConnection _Connection;
public DataReaderSQLite(SQLiteConnection connection) { ... }
public …Run Code Online (Sandbox Code Playgroud) c# interface single-responsibility-principle solid-principles interface-segregation-principle
我正在尝试使用设备上的振动(Windows Phone),但是我似乎无法找到适合Windows 10的相应API.在Windows 8.x中,我可以使用它,但不再是通用Windows平台中提供.
谁能指出我正确的方向?
想象一下场景.
public enum SaveStates
{
Saved, //Represents a successful save.
SavedWithChanges, //Represents a successful save, where records were modified
SavedWithoutChanges //Represents a successful save, but no records were modified
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Saved如果是SavedWithChanges 或 ,则可以考虑枚举SavedWithoutChanges.
所以,如果我有一个像这样的变量:
SaveStates lastState = SaveStates.SavedWithoutChanges;
Run Code Online (Sandbox Code Playgroud)
我最好喜欢做这样的事情:
if (lastState == SaveStates.Saved)
{
//The state is saved, do something awesome.
}
Run Code Online (Sandbox Code Playgroud)
我当然可以这样做:
if (lastState == SaveStates.SavedWithChanges || lastState == SaveStates.SavedWithoutChanges)
{
...
Run Code Online (Sandbox Code Playgroud)
然而,这有点乏味,我不能假设另一个开发人员将了解如何正确使用枚举.
每个枚举都是必需的,因为可能存在一个实例,我们可能希望在保存的情况下执行某些特定操作,例如没有更改.
我对其他设计理念持开放态度.
我的解决方案中有一个自定义控件库,我的主WPF项目引用它.如果自定义控件库中存在错误,则错误列表会出现错误并显示数百个错误.这是一个这样的事件的例子.

现在这只是我为了证明问题而强迫的一个错误.
在这种情况下,问题不是那么严重,因为只有 21个错误.但是,有些情况下我不得不过滤掉数百个错误,以找出造成其他一切失败的实际错误.
我相信我明白问题究竟是什么.我认为问题是由于没有构建自定义控件库,因此我的主项目找不到它的dll,因此无法找到自定义控件,这会导致错误.
现在,事实上,错误列表不是说谎,我的意思是,这些都是真正的错误.然而,话虽如此,有没有办法防止这种情况发生?
这可能是一个愚蠢的问题,但这里有.
我有以下问题:
public class MyBaseClass
{
public void SomethingAwesome()
{
//Awesome stuff happens here, but only when the Something() method
//is called in the other classes.
}
}
public class SomeClass : MyBaseClass
{
public void Something()
{
//Something happens here
}
}
public class SomeOtherClass : MyBaseClass
{
public void Something()
{
//Something else happens here
}
}
Run Code Online (Sandbox Code Playgroud)
MyBaseClass有一个方法,当从继承它的类中调用Something()方法时需要调用该方法.
这背后的想法是,我需要记录这个方法被调用时出于很多无聊的公司原因.我宁愿有一个基类,它可以在调用方法时自动进行审计,而不是让开发人员自己调用该方法.
可以实现这样的事情吗?如果是这样,怎么样?
我已经考虑过部分方法,但这需要具有相同名称的类,这在这种情况下是不可能的.
我有以下问题:
public class AwesomeClass
{
public string SomethingCool { get; set; }
public string SomethingUseless { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个包含许多属性的类,我需要将这些类的列表转换为字符串列表,其中字符串表示类中的属性.
List<AwesomeClass> stuff = new List<AwesomeClass>();
//Fill the stuff list with some tings.
List<string> theCoolStuff = //Get only the SomethingCool property in the AwesomeClass list.
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为字符串列表的原因是因为我有一个方法将List作为参数,但SomethingCool属性包含我需要此列表的数据.
注意:我可以在列表中使用foreach循环并填充字符串列表,但我正在寻找一种更优雅的方法,也许LINQ可以为我做这个吗?
我正在开发一个针对Android和Windows(通用)的Apache Cordova应用程序,但是在Windows平台上,我在运行应用程序时收到以下错误.
0x800a1391 - JavaScript运行时错误:'Promise'未定义
这个问题似乎是Windows通用应用程序所独有的,在Android上运行良好.
有问题的功能如下:
function requestData(ext, params, method) {
return new Promise(function (resolve, reject) {
var req = new XMLHttpRequest();
var url = "https://someurlhere/api/" + ext;
req.open(method, url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Authorization", token);
req.onreadystatechange = function () {//Call a function when the state changes.
if (req.readyState == 4 && req.status == 200)
resolve(JSON.parse(req.responseText));
console.log(req.status + ' ' + req.statusText);
}
req.onerror = function () {
reject(req.responseText);
}
req.send(params);
});
};
Run Code Online (Sandbox Code Playgroud)
错误在以下行:
return new …Run Code Online (Sandbox Code Playgroud) c# ×10
cordova ×2
wpf ×2
.net ×1
android ×1
batch-file ×1
class ×1
csv ×1
datatable ×1
enums ×1
events ×1
filepath ×1
ftp ×1
inheritance ×1
inno-setup ×1
interface ×1
interface-segregation-principle ×1
javascript ×1
linq ×1
list ×1
max-path ×1
methods ×1
node-modules ×1
node.js ×1
performance ×1
promise ×1
single-responsibility-principle ×1
uwp ×1