string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',');
這不工作導致分裂方法返回一個字符串[]我如何轉換逗號分隔字符串轉換成列表<int>
請幫助。
string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',');
這不工作導致分裂方法返回一個字符串[]我如何轉換逗號分隔字符串轉換成列表<int>
請幫助。
這裏是做這件事的一種方法:
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
這也可能是'List
是否需要'new List <>'? – LiquidPony 2012-02-15 21:03:59
@LiquidPony no;你可以調用'ToList()'來代替;其結果基本相同:'List
您可以使用LINQ瓦特/ int.Parse()
到string[]
轉換爲IEnumerable<int>
,然後將該結果傳遞給List<T>
構造:
var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));
string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',').Select(x => x.Trim()).Select(x=> Int32.Parse(x)).ToList();
有點LINQ走得很遠:
List<int> TagIds = tags.Split(',')
.Select(t => int.Parse(t))
.ToList();
如果您使用的是C#3.5,你可以使用LINQ來實現這一
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(s=>int.Parse(s)).ToList();
或短的一個
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(int.Parse).ToList();
string tags = "9,3,12,43,2";
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
沒有LINQ查詢,可以選擇這種方法,
string tags = "9,3,12,43,2";
List<string> numbers = nos.Split(',').ToList<string>();
然後你可以將這個List轉換成整數t YPE ...
如果你想加入一些簡單的驗證並跳過無效值(而不是拋出一個異常),這裏的東西,它使用的TryParse:
string csv = "1,2,3,4,a,5";
int mos = 0;
var intList = csv.Split(',')
.Select(m => { int.TryParse(m, out mos); return mos; })
.Where(m => m != 0)
.ToList();
//returns a list with integers: 1, 2, 3, 4, 5
編輯:這裏是一個更新根據Antoine的反饋進行查詢。它首先調用TryParse來過濾掉任何不正確的值,然後解析來執行實際的轉換。
string csv = "1,2,3,4,a,5,0,3,r,5";
int mos = 0;
var intList = csv.Split(',')
.Where(m => int.TryParse(m, out mos))
.Select(m => int.Parse(m))
.ToList();
//returns a list with integers: 1, 2, 3, 4, 5, 0, 3, 5
如果0是一個合法輸入,則失敗! – 2018-01-11 16:58:15
我對khalid13的答案做了修改。如果用戶輸入一串「0」,他的回答會從結果列表中刪除。我做了類似的事情,但使用了匿名對象。
var result = commaSeparatedString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => new { didConvert = int.TryParse(s.TrimNullProtection(), out convertedInt), convertedValue = convertedInt })
.Where(w => w.didConvert)
.Select(s => s.convertedValue)
.ToList();
TrimNullProtection是一個自定義函數,我用它來保護字符串是否爲空。
上面所做的是去掉任何無法轉換且沒有錯誤的字符串。如果您在轉換出現問題時需要輸入錯誤,那麼接受的答案應該可以解決問題。
我偶然發現了這一點,我只是想分享我自己的解決方案沒有LINQ。這是一個原始的方法。非整數值也不會被添加到列表中。
List<int> TagIds = new List<int>();
string[] split = tags.Split(',');
foreach (string item in split)
{
int val = 0;
if (int.TryParse(item, out val) == true)
{
TagIds.Add(val);
}
}
希望這會有所幫助。
[How to create a list from a comma separated string?](http:// stackoverflow。com/questions/910119/how-to-create-a-listt-from-a-comma-separated-string) –
Lijo
2014-07-09 12:09:57
[將逗號分隔的int串轉換爲int數組](https://stackoverflow.com/問題/ 1763613/convert-comma-separated-string-of-ints-to-int-array) – Lijo 2017-05-31 16:29:11