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();