字段类型变量-C#应用程序数据集
本文关键字:数据集 应用程序 -C# 类型变量 字段 | 更新日期: 2023-09-27 18:22:21
假设我有一个字符串变量,其中包含一个来自SQL查询的值,存储在一个变量中,如:
string strDesc = ds.Tables[0].Rows[0]["Description"].ToString();
作为一个字符串,它可以正常
如果我在数据库中有类型为int和money的字段类型,我该如何像上面那样应用它呢?如果应用了转换,会是下面的样子吗?:
int字段我想将其保留为int
int strOrderID = ds.Tables[0].Rows[0]["OrderID"];
货币字段我想保留为类型货币
decimal strPrice = ds.Tables[0].Rows[0]["Price"];
提前感谢提供的任何答案
我建议使用强类型Field
扩展方法,它也支持可为null的类型:
int orderID = ds.Tables[0].Rows[0].Field<int>("OrderID");
decimal price = ds.Tables[0].Rows[0].Field<decimal>("Price");
假设Price
可以是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;
}
}