使用C#,我有一个对象列表和一个int列表.例如,我有一个事件列表,每个事件都有一个eventId.
我想比较事件列表和整数列表,并删除任何对象,其ID出现在整数列表中.所以,例如,我有一个像这样的对象列表:
Event Id Event Name
1 Event1
2 Event2
3 Event3
Run Code Online (Sandbox Code Playgroud)
并且我的int列表包含1和3.所以我想删除Event1和Event3,留下我唯一的Event2.这样做的最佳方法是什么?
我也想反过来做.所以我还想得到一个没有出现在对象列表中的整数列表.所以我有一个没有出现在整数列表中的事件列表,然后我会有一个未出现在对象列表中的整数列表.
就目前而言,我正在使用多个foreach和if语句,而且效率似乎非常低效,这是一些应该更容易的代码.我知道使用linq可能是可行的,但我还在学习并且还没有完全掌握linq.
正如您猜测的那样,您可以使用LINQ.您有一个事件列表,您希望在第二个列表中获取id存在的事件.
var result = listOfEvents.Where(ev => listOfInts.Contains(ev.Id)).ToList();
Run Code Online (Sandbox Code Playgroud)
反之亦然:
var result = listOfEvents.Where(ev => !listOfInts.Contains(ev.Id)).ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,这会创建一个包含结果的新列表,但不会修改列表.我建议使用LINQ方法,但如果你真的想这样做,可以使用RemoveAll方法List<T>并传递类似的谓词:
listOfEvents.RemoveAll(ev => listOfInts.Contains(ev.Id));
Run Code Online (Sandbox Code Playgroud)