[英]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.