gpt4 book ai didi

c# - 查询交错数组中所有列中的第一个元素

转载 作者:太空宇宙 更新时间:2023-11-03 16:15:20 25 4
gpt4 key购买 nike

        int numPics = 3; //Populated from a query
string[] picID = new string[numPics];
//pictureTable is constructed so that it correlates to pictureTable[column][row]
string[][] pictureTable = null; //assume the table has data
for (int i = 0; i < numPics; i++)
{
//LINQ query doesn't work. Returns an IEnumerable<string> instead of a string.
picID[i] = pictureTable.Where(p => p[0].Equals("ID")).Select(p => p[i]);
}

我是 LINQ 的新手,但我一直在搜索但没有找到答案。我希望能够使用 LINQ 检查我的 pictureTable 中每一列的第一个字符串,看它是否与字符串匹配。然后,我想获取该列并从 0 到 i 的每一行中提取数据。我知道我可以通过更改列并保持行不变来使用 for 循环来完成此操作,但我想使用 LINQ 来实现相同的结果。

此外,如果有可能摆脱第一个 for 循环并获得相同的结果,我也会对此感兴趣。

编辑:假设我们有一个包含以下数据的表,请记住一切都是字符串。

Column Name    [ID]  [Name]  [Age]
Row 1 [1] [Jim] [25]
Row 2 [2] [Bob] [30]
Row 3 [3] [Joe] [35]

我希望能够查询列名,然后能够通过索引或查询行的数据从中获取数据。我将给出一个使用 for 循环实现我想要的示例。

        string[][] table = new string[][] { 
new string[] { "ID", "Name", "Age" },
new string[] { "1", "Jim", "25" },
new string[] { "2", "Bob", "30" },
new string[] { "3", "Joe", "35" }};

string[] resultRow = new string[table.GetLength(1)];
for (int i = 0; i < table.GetLength(0); i++)
{
if (table[i][0] == "Name") //Given this in a LINQ Query
{
Console.WriteLine("Column Name = {0}\n", table[i][0]);
for (int j = 1; j < table.GetLength(1); j++) //starts at 1
{
resultRow[i] = table[i][j]; //This is what I want to happen.
}
break; //exit outer loop
}
}
//Output:
//Column Name = Name

最佳答案

我认为这会给你相当于你在 resultRow 数组中寻找的东西

string[][] table = new string[][] { 
new string[] { "ID", "Name", "Age" },
new string[] { "1", "Jim", "25" },
new string[] { "2", "Bob", "30" },
new string[] { "3", "Joe", "35" }
};

//get index of column to look at
string columnName = "Name";
var columnIndex = Array.IndexOf(table[0], columnName, 0);

// skip the title row, and then skip columns until you get to the proper index and get its value
var results = table.Skip(1).Select(row => row.Skip(columnIndex).FirstOrDefault());

foreach (var result in results)
{
Console.WriteLine(result);
}

另一件需要注意的事情是 SelectMany,因为您可以使用它来将多个列表展平为一个列表。

关于c# - 查询交错数组中所有列中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15958691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com