C# 如何使用linq从列表中的列表中选择特定字符串(按索引)?
我有一个像这样的物体C# 如何使用linq从列表中的列表中选择特定字符串(按索引)?,c#,linq,C#,Linq,我有一个像这样的物体 List<List<string>> MyData; 我认为这就是您想要的(索引是请求的索引的集合) var index=newlist(){0,2}; var whatYouWant=strings.Select(item=>index.Select(index=>item[index]).ToList()) 在linq中,您可以传递两个参数,第二个参数将是带有当前元素索引号的整数 List<string> strings = new
List<List<string>> MyData;
我认为这就是您想要的(索引是请求的索引的集合)
var index=newlist(){0,2};
var whatYouWant=strings.Select(item=>index.Select(index=>item[index]).ToList())
在linq中,您可以传递两个参数,第二个参数将是带有当前元素索引号的整数
List<string> strings = new List<string>();
strings.Where((s, i) => i == indexToLookFor).Select(s => s);
当然,这只是一个例子,但我相信您可以根据您的情况进行调整。var List=new List
var lists = new List<List<string>>
{
new List<string> { "1", "2", "3", "4" },
new List<string> { "5", "6", "7", "8" },
new List<string> { "9", "10", "11", "12" },
};
var indexes = new List<int> { 0, 2 };
var result = lists.Select(l => indexes.Select(i => l[i]).ToList()).ToList();
foreach (var list in result)
{
Console.Write("list:");
foreach (var elt in list)
{
Console.Write(elt + ",");
}
Console.Write(" / ");
}
{
新名单{“1”、“2”、“3”、“4”},
新名单{“5”、“6”、“7”、“8”},
新名单{“9”、“10”、“11”、“12”},
};
var索引=新列表{0,2};
var result=lists.Select(l=>index.Select(i=>l[i]).ToList()).ToList();
foreach(结果中的var列表)
{
控制台。写入(“列表:”);
foreach(列表中的变量)
{
控制台。写入(elt+“,”);
}
控制台。写(“/”;
}
输出:
列表:1,3,/列表:5,7,/列表:9,11/
var indexes = myObjects.Select(obj => obj.Number);
var result = test.Select(list => indexes.Select(idx => list[idx]).ToList()).ToList();
myObjects
是MyObject
实例的列表。谢谢您的解决方案!你真的帮了我。这个答案是错误的。它只选择列表中每个字符串的字符0和2,而不是按索引选择列表中的字符串0和2。@monotomy我不认为这是错误的,不要忘记字符串
包含字符串列表,而不是字符串列表strings@Pako谢谢你。这很有帮助。
List<string> strings = new List<string>();
strings.Where((s, i) => i == indexToLookFor).Select(s => s);
strings.Where((s, i) => indexes.Contains(i)).Select(s => s);
var lists = new List<List<string>>
{
new List<string> { "1", "2", "3", "4" },
new List<string> { "5", "6", "7", "8" },
new List<string> { "9", "10", "11", "12" },
};
var indexes = new List<int> { 0, 2 };
var result = lists.Select(l => indexes.Select(i => l[i]).ToList()).ToList();
foreach (var list in result)
{
Console.Write("list:");
foreach (var elt in list)
{
Console.Write(elt + ",");
}
Console.Write(" / ");
}
var indexes = myObjects.Select(obj => obj.Number);
var result = test.Select(list => indexes.Select(idx => list[idx]).ToList()).ToList();