2012-08-07 31 views
0

我需要搜索我的DataGridView中的已知列,並返回包含DateTime對象的行(匹配時間最短(小於所需的搜索時間))。在DataGridView中查找包含最接近匹配的DateTime對象的行

我已經使用linq在過去搜索通過尋找數據的DataGridView。但在這種情況下,我一直在尋找的精確匹配,如:

public DataGridViewRow FindRow(DataGridView dgv, string columnID, object searchID) 
    { 
     DataGridViewRow row = dgv.Rows 
      .Cast<DataGridViewRow>() 
      .Where(r => r.Cells[columnID].Value.Equals(searchID)) 
      .First(); 

     return row; 
    } 

現在我有一個確切的DateTime對象,在我的DataGridView包含所有DateTime對象列。

DateAdded  Data1 Data2 
12:34:56.012 x  y 
12:34:56.345 x  y 
12:34:56.678 x  y 

在上述情況下,如果我尋找的DateTime對象 「12:34:56.4」,我想返回包含 「12:34:56.345」 的第二行。

我仍然熟悉linq。 Anytone有什麼想法?

回答

0

有時提出的問題可以幫助你對自己回答吧...

public DataGridViewRow FindRow(DataGridView dgv, DateTime searchID) 
    { 
     DataGridViewRow row = dgv.Rows 
      .Cast<DataGridViewRow>() 
      .Where(r => ((DateTime)r.Cells["DateAdded"].Value <= searchID)) 
      .Last(); 

     return row; 
    } 

這並獲得成功。

+0

您是否保證收集的.Where總是以DateAdded順序返回?如果不是最後一個元素可能不是你想要的。可能想要添加訂單。 – user957902 2012-08-07 15:54:34

+0

偉大的建議!謝謝。 – 2012-08-07 16:56:14