var id = new List<int> {2, 4, 6, 8, 9, 3, 5};
var memberOrders = _orderRepository.GetMemberOrders(memberId).ToList();
现在我想使用list fore id过滤列表2而没有foreach或for循环。请帮助我。
答案 0 :(得分:1)
听起来方法GetMemberOrders
会返回指定memberId
的所有订单。如果您要在id
列表中过滤这些订单,则可以使用List.Contains()
方法仅返回匹配的订单。
如果这个假设是正确的,您可以通过使用更有意义的名称来帮助减少混淆,例如:
var orderIdFilter = new List<int> {2, 4, 6, 8, 9, 3, 5};
var filteredMemberOrders = _orderRepository.GetMemberOrders(memberId)
.Where(order => orderIdFilter.Contains(order.Id))
.ToList();
答案 1 :(得分:0)
您可以使用Enumerable.Intersect extension Method方法,如下所示:
MSDN:
使用默认值生成两个序列的集合交集 等于比较来比较值。
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