我有以下代码:
DateTime dt = (DateTime)rdr["DateFromSQLDB"];
genericclass.classpropertystring = dt.ToShortDateString();
如何将其压缩为一行?
这是班级......
public class genericclass
{
public string classpropertystring { get; set; }
}
虽然它很好用,但我希望能够使用类似的东西:
genericclass.classpropertystring = (DateTime)rdr["DateFromSQLDB"].ToShortDateString();
谢谢!
答案 0 :(得分:1)
你只想念2个括号:
genericclass.classpropertystring = ((DateTime)rdr["DateFromSQLDB"]).ToShortDateString();
答案 1 :(得分:1)
这应该有效:
genericclass.classpropertystring = ((DateTime)rdr["DateFromSQLDB"]).ToShortDateString();
然而,这样做会使代码的可读性降低,所以我会保留它,就像你在问题中一样。
答案 2 :(得分:1)
您必须首先确保对该对象进行限定:
genericclass.classpropertystring = ((DateTime)rdr["DateFromSQLDB"]).ToShortDateString();
通过在演员表周围添加括号,您可以将所有内容视为DateTime
类型。
我同意@adrianbanks,我更喜欢你的第一个例子的可读性。
答案 3 :(得分:1)
genericclass.classpropertystring = rdr.GetDateTime(rdr.GetOrdinal("DateFromSQLDB")).ToShortDateString();
答案 4 :(得分:0)
为什么要浓缩它?这使得阅读更加困难。如果返回的rdr对象是null,该怎么办?它会炸毁。我会尝试一些更强大的东西来处理潜在的坏值。虽然需要更多的代码,但是你可以处理更多的情况,而不需要在整个地方都有一堆try catch块。
public static void DoSomething()
{
using (var connection =new SqlConnection("constring"))
{
var command = new SqlCommand("myquery", connection);
connection.Open();
SqlDataReader rdr = command.ExecuteReader();
while (rdr.Read())
{
var mc = new MyClass();
var mydate = rdr["DateFromSQLDB"];
if (mydate != null)
{
DateTime date;
if (DateTime.TryParse(mydate.ToString(), out date))
{
mc.MyDateProperty = date.ToShortDateString();
}
}
}
}
}