我可以从列表中选择单个项目吗?

本文关键字:项目 单个 选择 列表 我可以 | 更新日期: 2023-09-27 17:59:40

我有一个字符串列表,我需要选择列表的某些部分来构造一个单独的字符串。我拥有的是:

name,gender,haircolour,car;
or
John,Male,Brown,toyota;

我还有一个单独的文件,指示哪些部分以及应该以什么顺序构造新字符串。

例如:Index = 0,3,1会打印John,toyota,Male1,2,0会打印Male,Brown,John

我已经尝试了几种方法来尝试选择我想要的项目的索引,但是所有返回值的函数都只返回 List 的内容,唯一给出整数的返回是 Count() ,我认为这没有帮助。

我试了又试,但我所做的只是越来越困惑自己。任何人都可以帮助提出实现这一目标的方法吗?

我可以从列表中选择单个项目吗?

你应该能够做 list[i],其中 i 是你需要的元素的索引。这里有一些例子: http://www.dotnetperls.com/list

        List<string> list = new List<string> { "John", "Male", "Brown", "toyota" };
        List<int> indexList = new List<int> { 0, 3, 1 };
        List<string> resultList = new List<string>();
        indexList.ForEach(i => resultList.Add(list[i]));

如果我正确理解了这个问题,这样的事情应该可以完成这项工作:

const string data = "John,Male,Brown,toyota";
const string order = "0,3,1";
string[] indexes = order.Split(',');
string result = indexes.Aggregate("", (current, index) => current + data.Split(',')[int.Parse(index)] + ",");
result = result.TrimEnd(',');

如果您的字符串数据以分号 ';' 结尾,如您的问题中可能指出的那样,请将该行更改为:

string result = indexes.Aggregate("", (current, index) => current + data.Split(',')[int.Parse(index)].TrimEnd(';') + ",");

请注意,此解决方案不会检查以确保给定的数据字符串中存在给定索引。若要添加检查以确保索引不会超出数组边界,请改为执行以下操作:

string result = indexes.Where(z => int.Parse(z) < data.Split(',').Length).Aggregate("", (current, index) => current + data.Split(',')[int.Parse(index)].TrimEnd(';') + ",");