使用 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
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