C# 使用linq从逗号分隔的字符串中删除
终于开始学习LINQ了。我想将字符串转换为对象。我知道还有其他方法,但我想看看如何使用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
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你否决了一个好的答案,因为有其他解决问题的方法吗?投票系统不是这样运作的。“向下投票”按钮显示“这个答案没有用”。这个答案怎么没用?让我们在不可避免的情况下使用,我不认为这是一个适合这种情况的地方。只是看起来不太像