我有这个代码
foreach (DataGridViewRow dgr in DataGridView1.Rows)
{
if(dgr.Cells["TillDate"].Value != null )
dgr.Cells["dgColTillDateCalculate"].Value =
(DateTime)dgr.Cells["TillDate"].Value ;
}
EDITED
单元格TillDate
是DataGridViewDateTimeCell的位置
我想在foreach循环中将这段条件的代码缩短为一行,有没有办法像
dgr.Cells["dgColTillDateCalculate"].Value =
(DateTime)dgr.Cells["TillDate"].Value == null
? doNothing
: dgr.Cells["TillDate"].Value;
我应该在doNothing
做些什么,请提出更有效的方法..
答案 0 :(得分:2)
试试这个
foreach (DataGridViewRow dgr in DataGridView1.Rows)
{
dgr.Cells["dgColTillDateCalculate"].Value =
(DateTime)dgr.Cells["TillDate"].Value == null
? (DateTime?)null
: dgr.Cells["TillDate"].Value;
}
答案 1 :(得分:2)
您可以使用linq将if
移动到foreach中,这样可以简化内部线路:
foreach (DataGridViewRow dgr in DataGridView1.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["TillDate"].Value != null))
{
dgr.Cells["dgColTillDateCalculate"].Value = (DateTime)dgr.Cells["TillDate"].Value;
}
答案 2 :(得分:1)
这是:
dgr.Cells["dgColTillDateCalculate"].Value =
dgr.Cells["TillDate"].Value == null
? (DateTime?)null
: dgr.Cells["TillDate"].Value;
但是,由于您要为dgr.Cells["dgColTillDateCalculate"].Value
分配值,请检查分配是否需要null
值。
答案 3 :(得分:0)
我认为您的原始代码是完美的,您不应该更改它。无论如何,将doNothing
替换为dgr.Cells["dgColTillDateCalculate"].Value
,以便它恢复原始值。