让我尽力解释这个。
基本上,我有一个字符串,我转换为char数组然后我使用LINQ选择char数组中的不同字符,然后通过Descending排序,但只捕获字符,而不是标点符号等。这里是代码:
string inputString = "The black, and, white cat";
var something = inputString.ToCharArray();
var txtEntitites = something.GroupBy(c => c)
.OrderByDescending(g => g.Count())
.Where(e => Char.IsLetter(e)).Select(t=> t.Key);
我收到错误消息:
错误CS1502:`char.IsLetter(char)'的最佳重载方法匹配有一些无效参数(CS1502)
错误CS1503:参数#1' cannot convert
System.Linq.IGrouping'表达式以键入`char'(CS1503)
有什么想法吗?谢谢:))
答案 0 :(得分:5)
试试这个:
string inputString = "The black, and, white cat";
var something = inputString.ToCharArray();
var txtEntitites = something.GroupBy(c => c)
.OrderByDescending(g => g.Count())
.Where(e => Char.IsLetter(e.Key))
.Select(t=> t.Key);
请注意Char.IsLetter(e.Key))
另一个想法是重新排列您的查询:
varinputString = "The black, and, white cat";
var txtEntitites = inputString.GroupBy(c => c)
.OrderByDescending(g => g.Count())
.Select(t=> t.Key)
.Where(e => Char.IsLetter(e));
另请注意,由于inputString.ToCharArray()
已经是String
,因此您无需拨打IEnumerable<Char>
。
答案 1 :(得分:2)
在您的where子句中,该上下文中的e
是您的分组,而不是字符。如果你想检查字符是否是一个字母,你应该测试你的密钥。
//...
.Where(g => Char.IsLetter(g.Key))
答案 2 :(得分:1)
我认为这就是你要找的东西
string inputString = "The black, and, white cat";
var something = inputString.ToCharArray();
var txtEntitites = something.Where(e => Char.IsLetter(e))
.GroupBy(c => c)
.OrderByDescending(g => g.Count()).Select(t=> t.Key);
答案 3 :(得分:-1)
List<char> charArray = (
from c in inputString
where c >= 'A' && c <= 'z'
orderby c
select c
).Distinct()
.ToList();