簡體   English   中英

通過DateTime列從DataTable中選擇行(小時)

[英]Selecting rows from DataTable by DateTime column (hours)

DatarowsForOneDay = dt.Select(
    dt.Columns[0].Caption + "='" + x.ToString("dd/MM/yyyy HH") + "'");

不起作用,但是

DatarowsForOneDay = dt.Select(
    dt.Columns[0].Caption + "='" + x.ToString("dd/MM/yyyy") + "'");

作品。

那么如何選擇同一小時的日期呢?

變量x類型為DateTime

.Select方法接受具有與DataColum.Expression使用的語法相同的語法的過濾器表達式。 您可以檢查MSDN條目以獲取詳細信息:

DataColumn.Expression屬性

如果LINQ可用,您可以執行以下操作:

DataTable dt = new DataTable();

dt.Columns.Add("DT", typeof(DateTime));

foreach (var item in Enumerable.Range(1, 20))
{
    dt.Rows.Add(new DateTime(2010, 3, 10, item, 20, 10));
}

DataRow[] rows = dt.Rows.Cast<DataRow>().Where(dr => 
    ((DateTime)dr["DT"]).ToString("yyyy-MM-dd HH") == "2010-03-10 10")
    .ToArray();

Console.WriteLine(rows.Length);

您可以使用此代碼。 迭代DataTable所有行,並根據相同的日期和小時將其添加到searchRecords List中。

List<DataRow> searchRecords = new List<DataRow>();
string searchDateOnHour = DateTime.Now.ToString("dd/MM/yyyy HH");
foreach (DataRow item in table.Rows)
{
    DateTime recordDate;
    DateTime.TryParse(item["comDate"].ToString(), out recordDate);
    string recordDateHour = recordDate.ToString("dd/MM/yyyy HH");        
    if (searchDateOnHour == recordDateHour)
        searchRecords.Add(item);            
}

使用SUBSTRING或LIKE

要么

dt.Columns[0].Caption + " LIKE '" + x.ToString("dd/MM/yyyy HH") + "*'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM