字段类型变量-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"];

提前感谢提供的任何答案

字段类型变量-C#应用程序数据集

我建议使用强类型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;
    }
}