我有一个字符串列表,其中包含我想要保存在单独变量中的信息。 .txt文件包含具有此类信息的行:
1个厨房1个微波炉微波2相关0.0025 1.29 0.88 1.29
var index = Enumerable.Range(2, 3).ToArray();
string objectInformationText = System.IO.File.ReadAllText("objectList.txt");
string[] objectInformation = objectInformationText.Split('\t');
现在,我想根据我的索引(即第2项和第3项)从objectInformation
中提取项目。输出应该是仅包含列表中的项目2和3的子集。
答案 0 :(得分:3)
解决方案可以使用lambda Select
函数,如下所示:
var result = index.Select(x => information[x]).ToList();
答案 1 :(得分:1)
虽然@ OmG的答案是正确的,但在您的情况下创建临时索引集合的替代方法是使用Skip / Take linq选择器。
MONTH_AMOUNT_SUM.[SUM Month], MONTH_AMOUNT_SUM.[SUM Amount]
这显然只适用于连续的索引范围。
答案 2 :(得分:1)
在linQ中,有很多方法可以根据索引进行选择。
string input = "1 kitchen 1 microwave microwave2 relevant 0.0025 1.29 0.88 1.29";
var spt = input.Split(' ');
//Select everything after the 1 element:
var afterTitle = spt.Skip(1);
//Select from index 2 to 5 incuding them -> 1 microwave microwave2 relevant
var from2to5 = spt .Skip(2) // Skip index 0, 1
.Take(4); // Take 2,3,4,5
//Select based on a Index list, OmG's answer is a better alternative for this one.
int[] idx = { 1, 2, 4, 5 };
var inIdx = spt.Where((value,index)=> idx.Contains(index));
当可以计算所需的索引时,最后一个例子将是有用的。
//Select only the Even one
var even = spt.Where((value,index)=> index%2==0);