使用 lambda 或更简单的方法过滤列表

Filter list using lambda or anything easier

var id = new List<int> {2, 4, 6, 8, 9, 3, 5};

var memberOrders = _orderRepository.GetMemberOrders(memberId).ToList();

现在我想使用列表 1 的 ID 过滤列表 2,不使用 foreach 或 loops.Please 帮助我。

这听起来像是方法 GetMemberOrders return 指定 memberId 的所有订单。如果您想过滤 id 列表中的那些订单,您可以使用 List.Contains() 方法仅过滤 return 个匹配的订单。

如果这个假设是正确的,您可以使用更有意义的名称来帮助减少混淆,例如:

var orderIdFilter = new List<int> {2, 4, 6, 8, 9, 3, 5};

var filteredMemberOrders = _orderRepository.GetMemberOrders(memberId)
    .Where(order => orderIdFilter.Contains(order.Id))
    .ToList();

您可以使用Enumerable.Intersect extension Method方法如下:

MSDN:

Produces the set intersection of two sequences by using the default equality comparer to compare values.

        var id1 = new List<int> { 2, 4, 6, 8, 9, 3, 5 };
        var id2 = new List<int> { 2, 9, 7, 3, 15};
        var memberOrders = id1.Intersect(id2);

输出:2,9,3