亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Linq 查詢中使用 enum Tryparse,其中輸入是字符串,輸出是以 enum 作為值的

在 Linq 查詢中使用 enum Tryparse,其中輸入是字符串,輸出是以 enum 作為值的

C#
千巷貓影 2023-09-16 16:57:11
我已經看過這個問題,雖然它解決了他們手頭的問題,但它并沒有跳到我身上,我的問題仍然存在。我有以下代碼,其中一個字符串被拆分為其預期的鍵/值對,但通常會將其轉儲到字典中<string, string>。我需要該值采用枚舉形式,如下所示:public enum SortDirection {     asc = 0,     desc }我已將字典 orderBy 聲明如下:var orderedBy = new Dictionary<string, SortDirection>();keyValuePair.Value 是字符串中一個接一個的一組鍵值對。客戶端編號 asc,客戶端姓氏 asc分割它并創建字典的代碼如下。    orderedBy = keyValuePair.Value.Split(',')         .Select(x => x.Split(' '))         .ToDictionary(x => x[0], (x => Enum.TryParse(x[1], false, out SortDirection direction)));在任何時候,值都不會x[1]是“asc”或“desc”以外的任何值,但是我似乎無法將字符串值即時轉換為枚舉。我收到以下錯誤。無法將類型“System.Collections.Generic.KeyValuePair”轉換為“System.Collections.Generic.KeyValuePair”如何x[1]從上面代碼中的字符串(“asc”、“desc”)轉換為枚舉,從而通過 Linq 填充字典“orderBy” .ToDictionary?
查看完整描述

2 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

由于TryParse返回 a bool,并且您已定義字典來獲取SortDirection值,因此調用失敗。


相反,您可以使用 的結果TryParse作為條件,然后在成功時使用該值:


var orderedBy = new Dictionary<string, SortDirection>();

var sortDirection = SortDirection.asc;

var keyValuePair = "ClientNo asc,ClientLastName asc";


orderedBy = keyValuePair.Split(',')

    .Select(x => x.Split(' '))

    .Where(x => x.Length > 1 && Enum.TryParse(x[1], false, out sortDirection))

    .ToDictionary(x => x[0],

        x => (SortDirection) Enum.Parse(typeof(SortDirection), x[1]));


查看完整回答
反對 回復 2023-09-16
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

如果您確定字符串中始終包含有效值,則只需使用Enum.Parse代替Enum.TryParse。這將返回轉換后的值而不是布爾值。

如果該值碰巧不正確,您將收到異常。

查看完整回答
反對 回復 2023-09-16
  • 2 回答
  • 0 關注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號