簡體   English   中英

如何使用 SelectToken 將 c# 中的字符串轉換為枚舉

[英]How to convert string to enum in c# with SelectToken

請參考下面給出的代碼片段

foreach (var invoiceDescription in qbInvoiceLineArray)
{
    Line lineDescription = new Line();
    lineDescription.Description = Convert.ToString((string)invoiceDescription.SelectToken(QBConfig.InvoiceDescription));
    invoice.Line.Add(lineDescription);             
} 
    
public class QbInvoiceViewModel
{
    public decimal Balance { get; set; }       
    public List<LinkedTxn> LinkedTxn { get; set; }
    public DateTime DueDate { get; set; }
    public DateTime TxnDate { get; set; }
    public Decimal TotalAmt { get; set; }
    public List<Line> Line { get; set; }    
}
    
public class Line
{
    public string Description { get; set; }
    public LineDetailTypeEnum DetailType { get; set; }
}
    
public enum LineDetailTypeEnum
{
    SalesItemLineDetail
}

這行代碼

lineDescription.Description = Convert.ToString((string)invoiceDescription.SelectToken(QBConfig.InvoiceDescription));

可用於在 c# 中將字符串轉換為字符串。 這種類型的代碼也可以在 c# 中用於將字符串轉換為 int。 但是如何使用這種類型的代碼將字符串轉換為枚舉呢?

你不使用 Convert.ToString 到其他東西的字符串,你使用 Convert.ToXxx

如果invoiceDescription.SelectToken(QBConfig.InvoiceDescription)您返回枚舉成員名稱或值的字符串(或實際上是字符串的 object,正如您的演員可能指出的那樣),並且您希望它轉換為特定枚舉,您應該Enum.Parse<T>它,就像var e = Enum.Parse<InvoiceToken>((string)invoiceDescription.SelectToken(QBConfig.InvoiceDescription)) ,當然用你的枚舉的實際名稱替換 InvoiceToken

如果invoiceDescription.SelectToken(QBConfig.InvoiceDescription)您返回一個 int,它是枚舉成員值(不是名稱),您也可以將其轉換為Convert.ToInt32()然后將其轉換為枚舉類型; 任何 int 都可以轉換為枚舉

用於枚舉解析的MSDN

(可能還值得注意的是, Enum.Parse<T>比其他 forms 更新;如果您使用的是舊版本的 .NET,那么您正在查看的內容更像(T)Enum.Parse(typeof(T), string_here) )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM