1

我有一个包含如下数字的文本文件:

84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37
84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37
84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37
84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37

有没有办法读取 2 个数据点,例如 (84,152),然后是 (100,52)?

string[] lines = File.ReadAllLines(@"C:\Users\Farhan Afzal\Downloads\data_1_2.txt");
string[] line = lines.Select(l => String.Join(" ", l.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))).ToArray();
4

2 回答 2

1
var lines = File.ReadAllLines(@"C:\items.txt");
var points = new List<Tuple<int, int>>();
var items = lines.SelectMany(ln => ln.Split(new[] {' '}).Select(n => Convert.ToInt32(n)))
                 .ToList();
for (int i = 0; i < items.Count(); i+=2)
{    
    int second = (i + 1) < items.Count() ? items[ i + 1] : Int32.MinValue;                
    points.Add(Tuple.Create(items[i], second));
}

TODO:错误/输入格式处理

使用MoreLINQ Batch()这将只是

items.Batch(2)
于 2013-04-17T14:33:36.650 回答
0

在副作用的帮助下

int dummy = 0;
var result = list.GroupBy(x => dummy++%2)
                .Select(g => g.ToArray())
                .ToList();

还有一个没有副作用的长版本

var result = list.Select((x,i)=>new {item=x,index=i})
                .GroupBy(x => x.index%2)
                .Select(g => g.Select(x=>x.item).ToArray())
                .ToList();
于 2013-04-17T14:38:02.383 回答