我建议使用Field
也支持可空类型的强类型扩展方法:
int orderID = ds.Tables[0].Rows[0].Field<int>("OrderID");
decimal price = ds.Tables[0].Rows[0].Field<decimal>("Price");
假设Price
can NULL
,您可以Nullable<decimal>
轻松地将其转换为:
decimal? price = ds.Tables[0].Rows[0].Field<decimal?>("Price");
if(price.HasValue) Console.WriteLine(price.Value);
顺便说一句,旧的方法是简单的铸造:
int orderID = (int) ds.Tables[0].Rows[0]["OrderID"];
但是,如果您多次使用此查询并且选择单个表或至少属于一起的字段,则应考虑创建具有这些属性的类。然后,您的代码变得更具可读性、可重用性和可维护性。
public class Order
{
public int OrderID { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public override bool Equals(object obj)
{
Order o2 = obj as Order;
if (o2 == null) return false;
return OrderID == o2.OrderID;
}
public override int GetHashCode()
{
return OrderID;
}
public override string ToString()
{
return Description;
}
}