小编smr*_*mr5的帖子

控制台应用程序的进度条

我正在写一个简单的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)

c# console progress

68
推荐指数
8
解决办法
7万
查看次数

找时间戳之间的差距

我在表中有很多行.该表有一个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()

sql sql-server

4
推荐指数
1
解决办法
5075
查看次数

从Active Directory获取GUID或本机GUID

我正在编写一个Web服务,用于检查用户是否存在于Active Directory中以及是否启用了用户帐户.一旦检查完毕,我就会继续验证他们的用户帐户.一旦他们成功输入用户名和密码,我想得到GUIDNativeGuid我正在验证的人.我想使用GUIDNativeGUID在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)

c# directoryservices web-services active-directory

4
推荐指数
1
解决办法
3630
查看次数

从csv文件中获取每行中所有逗号的计数

我想要完成的是读取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)

c# console-application

2
推荐指数
1
解决办法
2545
查看次数

在XSLT v 1.0中将秒转换为hh:mm:ss

我有一个列,它返回总秒数.例如

266

我想显示266秒

0时04分26秒

这就是我在XSLT中的做法:

<xsl:value-of select="format-number(/CAudioFile/CRI/Duration div 60 mod 60, '00:00:00')"/>
Run Code Online (Sandbox Code Playgroud)

但是,我的输出是

00:00:04

有关如何解决此问题的任何建议?

xml xslt

1
推荐指数
1
解决办法
1388
查看次数

指定 ID 的两行之间的时间差

我试图找出具有相同 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)

这是输出。

在此输入图像描述

我只希望输出以黄色突出显示。

有什么建议么?

SQLFIDDLE

sql-server-2012

1
推荐指数
1
解决办法
1695
查看次数

SQL Date Range仅显示过去一小时的数据

我想做一个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返回数据

谢谢

sql-server range

0
推荐指数
1
解决办法
3267
查看次数

连接两个表并仅返回第二个表中的一行

我有两张桌子。两个表都包含一个可用于将它们连接在一起的 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”附近的语法不正确。

关于如何解决这个问题有什么建议吗?或者以不同的方式得到结果?

sql-server sql-server-2012

0
推荐指数
1
解决办法
1万
查看次数

添加前导零时间

在我的控制台应用程序中,我正在使用以下小时格式执行的小时写入文本文件:

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# text console-application

-1
推荐指数
1
解决办法
506
查看次数