Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以用LINQ做得更好吗 List data=new List(File.ReadAllLines(Filename)).ConvertAll(委托(字符串值) { 返回新列表(value.Split('.')).ConvertAll(委托(字符串字节值) { 返回Convert.ToByte(字节值); }).ToArray(); });_C#_Linq - Fatal编程技术网

C# 我可以用LINQ做得更好吗 List data=new List(File.ReadAllLines(Filename)).ConvertAll(委托(字符串值) { 返回新列表(value.Split('.')).ConvertAll(委托(字符串字节值) { 返回Convert.ToByte(字节值); }).ToArray(); });

C# 我可以用LINQ做得更好吗 List data=new List(File.ReadAllLines(Filename)).ConvertAll(委托(字符串值) { 返回新列表(value.Split('.')).ConvertAll(委托(字符串字节值) { 返回Convert.ToByte(字节值); }).ToArray(); });,c#,linq,C#,Linq,扩展方法通常比等效的LINQ更简洁: List<byte[]> data = new List<string>(File.ReadAllLines(Filename)).ConvertAll<byte[]>(delegate(string value) { return new List<string>(value.Split('.')).ConvertAll<byte>(delegate(string byte

扩展方法通常比等效的LINQ更简洁:

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();
    });
在LINQ中,这将是:

File.ReadAllLines(Filename).Select(
    line => line.Split('.').Select(ch => Convert.ToByte(ch)).ToArray()
    ).ToArray();

我面前没有VS,所以我希望这不会太离谱。当然,这两个版本都需要VS9(2008)。

我通常一次使用一行输入(以允许处理大型文件):


如何更好?更快?更大的更具可读性?您应该描述当前代码的问题,而不仅仅是粘贴代码,希望有人会花时间理解它并猜测您想要从中得到什么。Kobi:您忘记了方法“System.Linq.Enumerable.Select”(System.Collections.Generic.IEnumerable,System.Func)的更强、更难(请参见)
类型参数无法从用法中推断。尝试显式指定类型参数。
。这更有效:
.Select(token=>Convert.ToByte(token))
,但与您的答案的差异不足以证明另一个答案是正确的:P
(from line in File.ReadAllLines(Filename)
 select (
     from ch in line.Split('.')
     select Convert.ToByte(ch)
     ).ToArray()
).ToArray()
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();