有没有人知道是否可以通过使用数组参数来排除值来创建新的IEnumerable。
例如,下面是我想象的样子的一个例子。
class Item
{
public int id { get; set; }
public string name { get; set; }
}
IEnumerable看起来像这样:
item1 {id = 1}
item2 {id = 2}
item3 {id = 3}
我想创建一个新的IEnumerable但排除数组中的id号。
编写代码以提出建议:
Int32[] arrayList = {1,2};
var newIEnumerable = _exisitingIEnumerable.Where(o => (o.id NOT IN arrayList));
答案 0 :(得分:2)
再次查看您的问题,当_exisitingIEnumerable
的元素类型与arrayList
的元素类型不同时,您需要使用Where
来过滤掉{{1}的元素1}}
arrayList
原始回答:
_exisitingIEnumerable.Where(o => !arrayList.Contains(o.Id))
将返回_exisitingIEnumerable.Except(arrayList)
中不在_exisitingIEnumerable
如果您需要重复项,可以使用
arrayList
答案 1 :(得分:1)
您在问题中提出的方法有什么问题?您可以使用Where
并检查数组是否包含该值。在使用List作为目标集合的示例下面:
var myList = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8 };
int[] myArray = { 1, 2, 3 };
var result = new List<int>(myList.Where(n => !myArray.Contains(n)));