通过索引将用户的一个列表中的所选项目复制到另一个列表

时间:2012-07-26 19:36:52

标签: asp.net linq list

我有一个包含16个字符串的字符串列表。用户选择将此列表的索引为0,5,6,10,15的项目复制到第二个列表。

有没有办法通过linq做到这一点?

3 个答案:

答案 0 :(得分:3)

假设您已经拥有集合中的索引,您可以使用仅IList<T>使用索引器的Enumerable.ElementAt,因此它非常有效:

var indices = new List<int>(){ 0,5,6,10,15 };
List<String> result = indices.Select(i => strings.ElementAt(i)).ToList();

如果您不想创建新列表但将其复制到现有列表中:

other.AddRange(indices.Select(i => strings.ElementAt(i)));

答案 1 :(得分:0)

var list = new List<string> {"sdf", "sdfsd", "fdgfdgfhg"};
var result = list.Where(x => list.IndexOf(x) == 1 || list.IndexOf(x) == 2).ToList();

但我不建议这样做,这个任务是针对linq的

答案 2 :(得分:0)

还可以使用Where扩展方法的以下重载:

var string_list = new List<string>() { "0", "1", "2", "3", "4", "5" };
var index_list = new List<int>() { 0, 2, 3 };
foreach (string result in string_list.Where((s, i) => index_list.Contains(i)))
    Console.WriteLine(result);