使用Lambda表达式从IEnumerable中提取项

本文关键字:提取 IEnumerable Lambda 表达式 使用 | 更新日期: 2023-09-27 17:49:27

我想这样做:

var listItems = new List<someType>;
items.Method(i=>listItems.enqueue(i));

使用Lambda表达式从IEnumerable中提取项

您的场景看起来很简单,可以使用List。AddRange方法:

listItems.AddRange(items);

如果你想知道,List<T>有一个ForEach方法,但这样的方法不存在于IEnumerable<T>。你可以在Eric Lippert的博客文章中了解更多:"foreach"vs"foreach"。因此,我建议您利用listItems作为List<T>并使用AddRange方法的优势,而不是简单地将items转换为List<T>,然后在其上使用ForEach

您需要ForEach,它在illist上,所以您需要items.ToList().ForEach(i => listItems.Add(i));

我不确定,但我认为,你是在问关于列表减法。例如,您有两个列表list1list2,您希望从list1中减去list2中的项。在这种情况下,您应该执行以下操作:

List<int> list1 = new List<int>();
List<int> list2 = new List<int>();
list1.Add(1);
list1.Add(2);
list1.Add(3);
list1.Add(4);
list1.Add(5);
list2.Add(2);
list2.Add(4);
List<int> list3 = list1.Where(i => list2.IndexOf(i) == -1).Select(i => i).ToList();