使用Lambda Expression从IEnumerable中提取项目

时间:2011-04-07 13:10:49

标签: c# linq lambda

我想做那样的事情:

var listItems = new List<someType>;

items.Method(i=>listItems.enqueue(i));

我打赌这很简单。

3 个答案:

答案 0 :(得分:4)

您的方案看起来很简单,您可以使用List.AddRange method

listItems.AddRange(items);

如果您想知道,List<T>ForEach method,但IEnumerable<T>不存在此类方法。您可以在Eric Lippert的博文中了解更多相关信息:"foreach" vs "ForEach"。因此,我建议您利用listItems作为List<T>并使用AddRange方法,而不是将items转换为List<T>,只需使用{{ 1}}就可以了。

答案 1 :(得分:2)

您想要IList上的ForEach,因此您需要items.ToList().ForEach(i => listItems.Add(i));

答案 2 :(得分:0)

我不确定,但我认为,你在询问列表减法。例如,您有两个列表list1list2,并且您希望从list2中减去list1的项目。在这种情况下,您应该采取以下行动:

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