C# 无法使用linq查询获取唯一数字
我只想得到字符串中的数字部分,即:C# 无法使用linq查询获取唯一数字,c#,linq,C#,Linq,我只想得到字符串中的数字部分,即: Hello World 5 因此结果必须是:5 我所做的是: var temp = from c in "Hello World 5" select c where Char.IsDigit(c); 但是我在c上得到一个错误,编译器需要一个但我不明白为什么,查询还没有结束。您的语法错误,select位于末尾: var temp = from c in "Hello World 5" wher
Hello World 5
因此结果必须是:5
我所做的是:
var temp = from c in "Hello World 5"
select c
where Char.IsDigit(c);
但是我在
c
上得到一个错误,编译器需要一个
但我不明白为什么,查询还没有结束。您的语法错误,select
位于末尾:
var temp = from c in "Hello World 5"
where Char.IsDigit(c)
select c;
由于您将选择移动到了错误的位置,编译器需要一个代码>之前(然后也是意外的)其中
请注意,temp
不是单个字符,而是包含单个元素的序列'5'
您的语法错误,select
位于末尾:
var temp = from c in "Hello World 5"
where Char.IsDigit(c)
select c;
由于您将选择移动到了错误的位置,编译器需要一个代码>之前(然后也是意外的)其中
请注意,temp
不是单个字符,而是包含单个元素的序列'5'
顺序是从-其中-选择,因此您应该重新排序其中和选择
:
var temp = from c in "Hello World 5" where Char.IsDigit(c) select c;
因此,这是一个IEnumerable
:
您还可以使用等效的函数调用,在这种情况下,不需要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"
顺序是从
-其中
-选择
,因此您应该重新排序其中
和选择
:
var temp = from c in "Hello World 5" where Char.IsDigit(c) select c;
因此,这是一个IEnumerable
:
您还可以使用等效的函数调用,在这种情况下,不需要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"
@马里奥塞达:你期望得到什么结果?我需要提取5,所以你想要第一场比赛?或者一个包含所有匹配项的字符串?只有数字5,所以删除“Hello World”:@MarioSerda:但是你想要一个字符
,还是字符串
?@MarioSerda:你期望得到什么结果?我需要提取5,所以你想要第一个匹配项?或者一个包含所有匹配项的字符串?只有数字5,所以删除“Hello World”:@MarioSerda:但是你想要一个字符
,还是字符串
?