List<byte[]> data = new List<string>(File.ReadAllLines(Filename)).ConvertAll<byte[]>(delegate(string value)
{
return new List<string>(value.Split('.')).ConvertAll<byte>(delegate(string byteVal)
{
return Convert.ToByte(byteVal);
}).ToArray();
});
答案 0 :(得分:2)
扩展方法通常比等效的LINQ更简洁:
File.ReadAllLines(Filename).Select(
line => line.Split('.').Select(ch => Convert.ToByte(ch)).ToArray()
).ToArray();
在LINQ中,这将是:
(from line in File.ReadAllLines(Filename)
select (
from ch in line.Split('.')
select Convert.ToByte(ch)
).ToArray()
).ToArray()
我没有VS在我面前,所以我希望这不是太远了。两个版本当然都需要VS9(2008)。
答案 1 :(得分:1)
好吧,我通常会一次消耗输入一行(以允许处理大文件):
static IEnumerable<string> ReadLines(string path) {
using (var file = File.OpenText(path)) {
string line;
while ((line = file.ReadLine()) != null) {
yield return line;
}
}
}
然后使用:
var qry = from line in ReadLines(Filename)
select Array.ConvertAll<string,byte>(line.Split('.'), Convert.ToByte);
如果您需要列表(而不是序列);
var list = qry.ToList();