Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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从逗号分隔的字符串中删除_C#_Linq_Csv_Linq To Objects - Fatal编程技术网

C# 使用linq从逗号分隔的字符串中删除

C# 使用linq从逗号分隔的字符串中删除,c#,linq,csv,linq-to-objects,C#,Linq,Csv,Linq To Objects,终于开始学习LINQ了。我想将字符串转换为对象。我知道还有其他方法,但我想看看如何使用LINQ。这是我想到的最好的方法: using System; using System.Linq; public class Program { public static void Main() { string [] lines = new string[2]; lines[0] = "John, 12345, true"; lines[1

终于开始学习LINQ了。我想将字符串转换为对象。我知道还有其他方法,但我想看看如何使用LINQ。这是我想到的最好的方法:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string [] lines = new string[2];
        lines[0] = "John, 12345, true";
        lines[1] = "Miles, 45678, true";

        var o = from x in lines
                select new {
                    name = x.Split(',')[0],
                    zip  = Int32.Parse(x.Split(',')[1]),
                    status = bool.Parse(x.Split(',')[2])
                };
        foreach (var p in o) {
            Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
        }
    }
}
我的问题是:有没有更好的方法不使用所有这些
Split()
s?这是一把小提琴:

我一直认为在这里,
let
总是更干净。我认为除了
拆分
,没有更好的方法了,我觉得还可以

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string [] lines = new string[2];
        lines[0] = "John, 12345, true";
        lines[1] = "Miles, 45678, true";

        var o = from line in 
                    (
                        from inner in lines
                        select inner.Split(',')
                    )
                select new {
                    name = line[0],
                    zip  = Int32.Parse(line[1]),
                    status = bool.Parse(line[2])
                };
        foreach (var p in o) {
            Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
        }
    }
}
另一种方法是使用一个内部选择,下面显示了“流畅”的方法,这是查询版本,我认为这可以更容易地看到wat正在进行

享受你进入林克的旅程

如果你能得到Jon Skeet的副本,LINQ的部分绝对精彩。这本书的其余部分也是如此

var query = lines.Select(r => r.Split(','))
                   .Select(t => new
                       {
                           name = t[0],
                           zip = int.Parse(t[1]),
                           status = bool.Parse(t[2])
                       });
foreach (var p in query)
{
    Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
}
我一直认为在这里,
let
总是更干净。我认为除了
拆分
,没有更好的方法了,我觉得还可以

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string [] lines = new string[2];
        lines[0] = "John, 12345, true";
        lines[1] = "Miles, 45678, true";

        var o = from line in 
                    (
                        from inner in lines
                        select inner.Split(',')
                    )
                select new {
                    name = line[0],
                    zip  = Int32.Parse(line[1]),
                    status = bool.Parse(line[2])
                };
        foreach (var p in o) {
            Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
        }
    }
}
另一种方法是使用一个内部选择,下面显示了“流畅”的方法,这是查询版本,我认为这可以更容易地看到wat正在进行

享受你进入林克的旅程

如果你能得到Jon Skeet的副本,LINQ的部分绝对精彩。这本书的其余部分也是如此

var query = lines.Select(r => r.Split(','))
                   .Select(t => new
                       {
                           name = t[0],
                           zip = int.Parse(t[1]),
                           status = bool.Parse(t[2])
                       });
foreach (var p in query)
{
    Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
}
我一直认为在这里,
let
总是更干净。我认为除了
拆分
,没有更好的方法了,我觉得还可以

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string [] lines = new string[2];
        lines[0] = "John, 12345, true";
        lines[1] = "Miles, 45678, true";

        var o = from line in 
                    (
                        from inner in lines
                        select inner.Split(',')
                    )
                select new {
                    name = line[0],
                    zip  = Int32.Parse(line[1]),
                    status = bool.Parse(line[2])
                };
        foreach (var p in o) {
            Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
        }
    }
}
另一种方法是使用一个内部选择,下面显示了“流畅”的方法,这是查询版本,我认为这可以更容易地看到wat正在进行

享受你进入林克的旅程

如果你能得到Jon Skeet的副本,LINQ的部分绝对精彩。这本书的其余部分也是如此

var query = lines.Select(r => r.Split(','))
                   .Select(t => new
                       {
                           name = t[0],
                           zip = int.Parse(t[1]),
                           status = bool.Parse(t[2])
                       });
foreach (var p in query)
{
    Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
}
我一直认为在这里,
let
总是更干净。我认为除了
拆分
,没有更好的方法了,我觉得还可以

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string [] lines = new string[2];
        lines[0] = "John, 12345, true";
        lines[1] = "Miles, 45678, true";

        var o = from line in 
                    (
                        from inner in lines
                        select inner.Split(',')
                    )
                select new {
                    name = line[0],
                    zip  = Int32.Parse(line[1]),
                    status = bool.Parse(line[2])
                };
        foreach (var p in o) {
            Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
        }
    }
}
另一种方法是使用一个内部选择,下面显示了“流畅”的方法,这是查询版本,我认为这可以更容易地看到wat正在进行

享受你进入林克的旅程

如果你能得到Jon Skeet的副本,LINQ的部分绝对精彩。这本书的其余部分也是如此

var query = lines.Select(r => r.Split(','))
                   .Select(t => new
                       {
                           name = t[0],
                           zip = int.Parse(t[1]),
                           status = bool.Parse(t[2])
                       });
foreach (var p in query)
{
    Console.WriteLine(p.name + " - " + p.zip + ", - " + p.status);
}
您将获得:

John - 12345, - True
Miles - 45678, - True
您将获得:

John - 12345, - True
Miles - 45678, - True
您将获得:

John - 12345, - True
Miles - 45678, - True
您将获得:

John - 12345, - True
Miles - 45678, - True



您可能想看看LinqToCSV项目,这感觉有点像一个问题。这个问题似乎离题了,因为代码正在工作,它只是要求对代码进行常规检查。这很公平。将来我将使用codereview。你可能想看看LinqToCSV项目,这感觉有点像一个问题。这个问题似乎离题了,因为代码正在工作,它只是要求进行一般的代码审查。这很公平。将来我将使用codereview。你可能想看看LinqToCSV项目,这感觉有点像一个问题。这个问题似乎离题了,因为代码正在工作,它只是要求进行一般的代码审查。这很公平。将来我将使用codereview。你可能想看看LinqToCSV项目,这感觉有点像一个问题。这个问题似乎离题了,因为代码正在工作,它只是要求进行一般的代码审查。这很公平。将来我将使用codereview。我将投票支持let子句这是一种更干净的方式。我将投票支持let子句这是一种更干净的方式。我将投票支持let子句这是一种更干净的方式。我将投票支持let子句这是一种更干净的方式,而不是使用
let
你可以使用嵌套选择,哪一个更干净,你能详细说明一下吗?@Tarec,我在上面提到过comment@NewHire你否决了一个好的答案,因为有其他解决问题的方法吗?投票系统不是这样运作的。“向下投票”按钮显示“这个答案没有用”。这个答案怎么没用?让我们在不可避免的情况下使用,我不认为这是一个适合这种情况的地方。这似乎不是一个好的做法。对于试图学习LINQ的人来说,这可能会导致他们不必要地使用
let
。你可以使用嵌套选择,而不是使用
let
,这样会更干净,你能详细说明一下吗?@Tarec,我在上面提到过comment@NewHire你否决了一个好的答案,因为有其他解决问题的方法吗?投票系统不是这样运作的。“向下投票”按钮显示“这个答案没有用”。这个答案怎么没用?让我们在不可避免的情况下使用,我不认为这是一个适合这种情况的地方。这似乎不是一个好的做法。对于试图学习LINQ的人来说,这可能会导致他们不必要地使用
let
。你可以使用嵌套选择,而不是使用
let
,这样会更干净,你能详细说明一下吗?@Tarec,我在上面提到过comment@NewHire你否决了一个好的答案,因为有其他解决问题的方法吗?投票系统不是这样运作的。“向下投票”按钮显示“这个答案没有用”。这个答案怎么没用?让我们在不可避免的情况下使用,我不认为这是一个适合这种情况的地方。这似乎不是一个好的做法。对于试图学习LINQ的人来说,这可能会导致他们不必要地使用
let
。你可以使用嵌套选择,而不是使用
let
,这样会更干净,你能详细说明一下吗?@Tarec,我在上面提到过comment@NewHire你否决了一个好的答案,因为有其他解决问题的方法吗?投票系统不是这样运作的。“向下投票”按钮显示“这个答案没有用”。这个答案怎么没用?让我们在不可避免的情况下使用,我不认为这是一个适合这种情况的地方。只是看起来不太像