我想只有我的字符串中的數字部分是:無法獲得僅與LINQ查詢數字
Hello World 5
所以其結果必然是:5
我所做的是:
var temp = from c in "Hello World 5"
select c
where Char.IsDigit(c);
但我在c
上得到一個錯誤,編譯器需要一個;
但我不明白爲什麼,查詢沒有結束。
我想只有我的字符串中的數字部分是:無法獲得僅與LINQ查詢數字
Hello World 5
所以其結果必然是:5
我所做的是:
var temp = from c in "Hello World 5"
select c
where Char.IsDigit(c);
但我在c
上得到一個錯誤,編譯器需要一個;
但我不明白爲什麼,查詢沒有結束。
順序爲from
- where
- select
,所以你應該重新排序where
和select
:
var temp = from c in "Hello World 5" where Char.IsDigit(c) select c;
這產生了csharp
交互shell:
csharp> var temp = from c in "Hello World 5" where Char.IsDigit(c) select c;
csharp> temp
{ '5' }
這是這樣一個IEnumerable<Char>
:
csharp> temp.GetType();
System.Linq.Enumerable+WhereEnumerableIterator`1[System.Char]
您也可以使用類似的函數調用,在這種情況下select
是沒有必要的:
var temp = "Hello World 5".Where(Char.IsDigit);
編輯:如果你想在LINQ查詢的結果一起加入到一個字符串,可以使用String.Concat
:
csharp> String.Concat("Hello World 5".Where(Char.IsDigit));
"5"
csharp> String.Concat(from c in "Hello World 5" where Char.IsDigit(c) select c);
"5"
你的語法是錯誤的,select
屬於底:
var temp = from c in "Hello World 5"
where Char.IsDigit(c)
select c;
既然你在錯誤的位置移動select
,編譯器之前的預期(當時還意外)where
一個;
。
注意temp
不是一個單獨的字符,但是含有單元素'5'
的序列。
謝謝,但爲什麼我得到EnumerableIterator作爲結果? –
@MarioSerda:你期待什麼結果? –
我需要提取5 –