如何根据特定值从数组中获取数据

How to get data from array based on a specific value

我在 C# 中工作,但在导入数据时遇到了问题。

我有一个包含数据的 txt 文档:

S/1234 001 2583 2 0 3 
S/1234 002 4323 2 0 3
S/1234 003 4583 2 0 3
S/2582 001 8745 3 0 4
S/2582 002 8254 3 0 4
S/2582 003 658T 3 0 4
S/2582 004 8785 3 0 4

我将此文档导入到列表中:

S/1234 2583
S/1234 4323
S/1234 4583
S/2582 8745
S/2582 8254
S/2582 658T
S/2582 8785

代码如下所示:

 string[] lines = System.IO.File.ReadAllLines(@fileLocal);
 List<string> whole_line = new List<string>();    
 List<string> only_first_column = new List<string>();    
 foreach (string line in lines)
    {
     string[] linee=line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
     whole_line.Add(linee[0].ToString()+" "+linee[2].ToString());
     only_first_column.Add(linee[0].ToString());
    }

现在,我的问题是,如何获取数据并将其按值 S/1234 和 S/2582 存储在两个 arrays/or 列表中?

我正在尝试获取数组 #1:

2583 4323 4583

和数组#2:

8745 8254 658T 8785

提前谢谢你:)

如果您只有 S/1234 和 S/2582 这两个值,您可以用一种简单的方法来完成。

string[] lines = System.IO.File.ReadAllLines(@fileLocal);
List<string> s1234 = new List<string>();    
List<string> s2582 = new List<string>();  

foreach (string line in lines)
{
        string[] linee = line.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

        if(linee[0].ToString() == "S/1234"){
            s1234.Add(linee[2].ToString()); 
        }else{
            s2582.Add(linee[2].ToString()); 
        }
}

请记住,这是一个非常基本的解决方案,假设您只想处理这 2 个键,如果您的目标更通用,它将不起作用

使用 linq:

var groups = lines.GroupBy(x => x.Split(' ').First());

string[] array1 = groups.Where(x => x.Key == "S/1234")
                        .SelectMany(x => x).Select(x => x.Split(' ')[2]).ToArray();

string[] array2 = groups.Where(x => x.Key == "S/2582")
                        .SelectMany(x => x).Select(x => x.Split(' ')[2]).ToArray();