Aam*_*mir 3 c# linq-to-objects
我有一个制表符分隔的字符串,格式如下:
string line = "D\t892270\t88418\t6\t2452927\t-99999\t-99999\t12";
Run Code Online (Sandbox Code Playgroud)
我想要的是获取通过指定的令牌的值indexToGet.
我写了以下LINQ查询来做这个,我相信可以改进很多,但目前我无法这样做.有人可以为我改进这个LINQ查询吗?
int indexToGet = 7;
var val =
(from str in line.Split('\t')
select str).ToArray().GetValue(indexToGet).ToString();
Run Code Online (Sandbox Code Playgroud)
为什么需要使用LINQ?以下代码在没有LINQ开销的情况下解决了它:
var val = line.Split('\t')[indexToGet];
Run Code Online (Sandbox Code Playgroud)
澄清:使用您使用的查询理解语法,无法指定您只需要在给定位置的元素.因此,使用LINQ,您将不得不依赖于ElementAt扩展方法.所以减少的第一次迭代你可以替换.ToArray().GetValue(indexToGet).ToString();并得到这个:
var val =
(from str in line.Split('\t')
select str).ElementAt(indexToGet);
Run Code Online (Sandbox Code Playgroud)
此外,由于查询部分除了花哨之外没有任何价值(并且使代码难以阅读),您可以减少到:
var val = line.Split('\t').ElementAt(indexToGet);
Run Code Online (Sandbox Code Playgroud)
接下来,因为ElementAt在这种情况下索引到一个数组,直接使用索引器会更快:
var val = line.Split('\t')[indexToGet];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4783 次 |
| 最近记录: |