我可以从列表中选择单个项目吗?
本文关键字:项目 单个 选择 列表 我可以 | 更新日期: 2023-09-27 17:59:40
我有一个字符串列表,我需要选择列表的某些部分来构造一个单独的字符串。我拥有的是:
name,gender,haircolour,car;
or
John,Male,Brown,toyota;
我还有一个单独的文件,指示哪些部分以及应该以什么顺序构造新字符串。
例如:Index = 0,3,1
会打印John,toyota,Male
或1,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(';') + ",");