3

可能重复:
从列表中删除子列表

我有 2 个列表:

var oldList = new List<int>(){1,2,3,4,5};

var newList = new List<int>(){1,2,3,6,7};

我怎样才能拥有旧列表的唯一值(使用 LINQ)?

//hardcoded list:
var list =  new List<int>(){4,5};

//LINQ:
var list = ??
4

5 回答 5

5
var unique = oldList.Except(newList);

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.except.aspx

于 2013-01-31T13:30:38.030 回答
2
var list = oldList.Except(newList).ToList();

这意味着它将返回所有oldList不在的元素newList

于 2013-01-31T13:30:45.900 回答
2

您的意思是 oldList 中的值不在 newList 中?如果是这样的话:

var list = oldList.Except(newList);

请参阅MSDN 上的Enumerable.Except

ToList()如果您确实需要列表,请添加呼叫。

于 2013-01-31T13:31:07.663 回答
2

你可以使用Enumerable.Except()方法。

产生两个序列的集合差。

var oldList = new List<int>() { 1, 2, 3, 4, 5 };
var newList = new List<int>() { 1, 2, 3, 6, 7 };

var value = oldList.Except(newList);

foreach (var i in value)
{
    Console.WriteLine(i);
}

这是一个DEMO.

于 2013-01-31T13:31:54.617 回答
0

你必须有Except方法。

var list = oldList.Except(newList);

产生两个序列的集合差。[文档]

于 2013-01-31T13:32:59.687 回答