2012-08-07 74 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