簡體   English   中英

如何轉換IEnumerable <char> 到IEnumerable <string> ?

[英]How to convert IEnumerable<char> to IEnumerable<string>?

這是代碼:

List<string> SecurityCodePreSend = new List<string> { "1", "2", "3", "4" };
List<string> SecurityCodeSended = new List<string>();

我想將SecurityCodePreSend的前15名添加到SecurityCodeSended,所以我使用Take of Lambda來完成。

SecurityCodeSended.AddRange(SecurityCodePreSend.Select(n => n.Take(15)));

但是,Visual Studio報告無法將IEnumerable<char>轉換為IEnumerable<string>

我用string.Concat搜索,發現有人說string.Concat可以解決它。

如何將IEnumerable<char>轉換為IEnumerable<string> 謝謝。

IEnumerable<String>.Select( n => n.Take(15) )不會做你認為它的作用:在n.Select( n => )表示每個String父值IEnumerable<String> ,所以Select( n => n.Take(15) )獲取每個字符串值的前15個字符,而不是前15個字符串值。

(這是因為Linq擴展方法可在任何 IEnumerable<T>StringIEnumerable<Char> (以暴露字符串中的每個字符))。

您只需要這個:

SecurityCodeSended.AddRange( SecurityCodePreSend.Take(15) )

現在,對於一些學究:

我注意到您的代碼應符合C#/。NET命名約定:

  • 方法參數和(在這種情況下) 局部變量應為camelCase
  • 公共實例和受保護實例的成員應為PascalCase
  • 靜態字段(在我看來)應以下划線_開頭
  • 實例成員應始終以此為前綴this.

是否應該使用C#關鍵字string代替正確的類型名稱String ,這也引起了激烈的爭論,最后Sended不是有效的英語( en-US )語法,正確的格式是Sent 如果將這些結合在一起,您的代碼應為:

List<String> securityCodesPreSend = new List<String> { "1", "2", "3", "4" };

List<String> securityCodesSent = securityCodesPreSend
    .Take( 15 )
    .ToList();

暫無
暫無

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

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