Dou*_*las 12
您可以根据Int32.TryParse方法的返回值过滤条目:
int temp;
list.Where(x => int.TryParse(x, out temp));
Run Code Online (Sandbox Code Playgroud)
将列表过滤为仅包含所有字符为数字的字符串:
var filtered = list.Where(s => s.All(char.IsDigit));
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用int.TryParse过滤函数,它在行为上有许多细微差别(有效整数允许的规则不仅仅是数字,请参阅文档).
如果您希望将结果键入为整数,请按照此处进行操作.Select(int.Parse).
单程:
IEnumerable<int> ints = strings.Where(str => str.All(Char.IsDigit))
.Select(str => int.Parse(str));
Run Code Online (Sandbox Code Playgroud)
这仅选择所有字符都是数字的字符串.然后它解析它们int.
更好的方法是使用此扩展:
public static int? TryGetInt(this string item)
{
int i;
bool success = int.TryParse(item, out i);
return success ? (int?)i : (int?)null;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以使用这个查询:
IEnumerable<int> ints = strings.Select(str => str.TryGetInt())
.Where(nullableInt => nullableInt.HasValue)
.Select(nullableInt => nullableInt.Value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |