我正在写一个简单的c#控制台应用程序,它将文件上传到sftp服务器.但是,文件量很大.我想显示已上传文件的百分比,或者只显示已上传文件的数量,以及要上传的文件总数.
首先,我获取所有文件和文件总数.
string[] filePath = Directory.GetFiles(path, "*");
totalCount = filePath.Length;
Run Code Online (Sandbox Code Playgroud)
然后我遍历文件并在foreach循环中逐个上传它们.
foreach(string file in filePath)
{
string FileName = Path.GetFileName(file);
//copy the files
oSftp.Put(LocalDirectory + "/" + FileName, _ftpDirectory + "/" + FileName);
//Console.WriteLine("Uploading file..." + FileName);
drawTextProgressBar(0, totalCount);
}
Run Code Online (Sandbox Code Playgroud)
在foreach循环中,我有一个进度条,我遇到了问题.它无法正常显示.
private static void drawTextProgressBar(int progress, int total)
{
//draw empty progress bar
Console.CursorLeft = 0;
Console.Write("["); //start
Console.CursorLeft = 32;
Console.Write("]"); //end
Console.CursorLeft = 1;
float onechunk = 30.0f / total;
//draw filled part
int position = 1;
for …Run Code Online (Sandbox Code Playgroud) 我在表中有很多行.该表有一个Date列(包括日期和时间)
我希望能够遍历表格并找到两行之间的任何间隙,其中行之间的差异为5分钟.
例如:
ID Date 1 2014-07-29 13:00:00 2 2014-07-29 13:01:00 3 2014-07-29 13:07:00
所以你可以看到第一行和第二行之间的时差是1分钟,所以我忽略了,那么我应该检查第二行和第三行之间的时间.由于时差是6分钟,我想用比较的日期吐出一个例外.
该表可能包含很多行,所以我会去查看前一个记录的下一个记录,所以一个......
我怎样才能在SQL Server中实现这一点.我可以做一个约会,但我会有很多行,我不想手动执行.
有什么建议?
注意*我不需要担心从一天到另一天的交叉时间,因为这项任务仅用于一天.我将在SQL语句中指定date = getdate()
我正在编写一个Web服务,用于检查用户是否存在于Active Directory中以及是否启用了用户帐户.一旦检查完毕,我就会继续验证他们的用户帐户.一旦他们成功输入用户名和密码,我想得到GUID或NativeGuid我正在验证的人.我想使用GUID或NativeGUID在SQL Server数据库中建立一个关系.
这是我正在采取的方法:
public string isAuthenticated (string serverName, string userName, string pwd)
{
string _serverName, _userName, _pwd;
_serverName = serverName;
_userName = userName;
_pwd = pwd;
string message;
if (DoesUserExist (_userName) == true)
{
if (isActive(userName) == true)
{
try
{
DirectoryEntry entry = new DirectoryEntry(_serverName, _userName, _pwd);
object nativeObject = entry.NativeObject;
//issue is here
string GUID = entry.Guid.ToString();
string GUIDID = entry.NativeGuid;
//end of issue
message = "Successfully authenticated";
} …Run Code Online (Sandbox Code Playgroud) 我想要完成的是读取CSV文件并获取每行中的逗号计数.所有CSV文件都相同.有9列,它们是分开的(,)所以我写了一个简单的函数,读取文件并使用foreach循环我读取文件中的每一行.
public static void readCSVFile(string path)
{
string _path = path;
string [] text = File.ReadAllLines(_path);
foreach (string line in text)
{
string currentLine = line;
Console.WriteLine("\t" + line);
}
}
Run Code Online (Sandbox Code Playgroud)
所以通常currentLine会有这样的输出:
号码,10/21/14 07:01:10,00:28:29,号码(姓名),号码; 号码(姓名),号码,号码(姓名),N/A,号码
,该行共有八个.如何以编程方式获取commas每行中的总数,因此我可以在foreach循环中执行以下操作:
foreach (string line in text)
{
string currentLine = line;
if (totalNumberOfCommas == 8)
{
//do something
}
else
{
//do something else
}
Run Code Online (Sandbox Code Playgroud) 我有一个列,它返回总秒数.例如
266
我想显示266秒
0时04分26秒
这就是我在XSLT中的做法:
Run Code Online (Sandbox Code Playgroud)<xsl:value-of select="format-number(/CAudioFile/CRI/Duration div 60 mod 60, '00:00:00')"/>
但是,我的输出是
00:00:04
有关如何解决此问题的任何建议?
我试图找出具有相同 ID 的两行之间的时间差(以秒为单位)。
这是一个简单的表格。
该表按myid和排序timestamp。我试图获取具有相同 . 的两行之间的总秒数myid。
这就是我的想法。此查询的唯一问题是它计算所有记录的时间差,但不计算相同 ID 的时间差。
SELECT DATEDIFF(second, pTimeStamp, TimeStamp), q.*
FROM (
SELECT *,
LAG(TimeStamp) OVER (ORDER BY TimeStamp) pTimeStamp
FROM data
) q
WHERE pTimeStamp IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
这是输出。
我只希望输出以黄色突出显示。
有什么建议么?
我想做一个mssql日期范围来返回一小时时间范围内的数据.意思是,我想返回最后一小时的数据,但不是当前时间的最后一小时.
Declare @today datetime
set @today=GETDATE()
select * from table1 where
datetime>= DATEADD(hh,-2,@Today)
Run Code Online (Sandbox Code Playgroud)
例如,当前时间是11:50:00 am我希望查询在上午10:00:00到10:59:00之间返回所有数据我的变量不能是静态的.我希望它是动态的,所以不管我一天中的哪个时间运行查询它只返回最后一小时的数据,无论现在是什么时候.所以它可能是在上午11:00到上午11:59:00之间的任何时间,我仍然希望结果从上午10点到上午10:59返回数据
谢谢
我有两张桌子。两个表都包含一个可用于将它们连接在一起的 ID。然而,表 2 可以有more than one row for the same ID. 表 1 始终只有一行。
例如,table 1包含 60,000 行。当我执行左内连接时,table2它返回约 171 000 行。
我想要完成的是返回表 2 中的第一行,这样当我加入它们时,我不会创建重复的记录。
我不确定这是否是正确的方法,但这就是我尝试过的:
SELECT I.*, a.Name from table 1 I
INNER JOIN (SELECT MIN (a.ID), a.NAME FROM table 2 group by a.ID) as a
on I.ID = a.ID
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
“i”附近的语法不正确。
关于如何解决这个问题有什么建议吗?或者以不同的方式得到结果?
在我的控制台应用程序中,我正在使用以下小时格式执行的小时写入文本文件:
DateTime.Now.ToString("t")
Run Code Online (Sandbox Code Playgroud)
但是,此格式不包含前导零.创建文本文件后,我阅读它,然后发送包含内容的电子邮件.
string x = DateTime.Now.ToString("hh");
Logs.writeSummary(DateTime.Now.ToString("t"), "Succeeded",x);
Run Code Online (Sandbox Code Playgroud)
例如,在生成文本文件后,它的外观如下:
上午6:09:成功
7:09 AM:成功
上午8:09:成功
上午9:09:成功
上午10:09:成功
上午11:09:成功
12:09 PM:成功
1:09 PM:成功
2: 09 PM:成功
3:18 PM:成功
4:09 PM:成功
5:09 PM:成功
6:09 PM:成功
我想要解决的是所有人都Succeeded应该对齐.
我采取的第一种方法是找到一种方法来添加一个leading zero,它将解决我的问题.但它没有成功.所以我采取了不同的方法.
我将当前小时hh作为参数的格式传递给函数,如果当前小时不是,10, 11, 12那么我space在小时之前添加一个.
public static void writeSummary(string dt, string msg, string f)
{
string filePath = @"C:\Logs\summary.txt";
string _dt = dt.ToString();
string _msg = msg;
string _f = f;
using (StreamWriter writer = new StreamWriter(filePath, …Run Code Online (Sandbox Code Playgroud) c# ×4
sql-server ×3
console ×1
progress ×1
range ×1
sql ×1
text ×1
web-services ×1
xml ×1
xslt ×1