列表中的过滤列表linq

发布于 2025-01-28 14:01:52 字数 410 浏览 2 评论 0原文

我有列表说的客户列表,在每个列表中,还有另一个订单列表,

Class Customer
{
int ID,
string Name
List<Order> orders
}

Class Order{
int ID,
string Name
}
Also have a integer list of filteredorderIds = {1,2,3,4}

我想过滤从FilteredOrderIds列表中获得有序的客户列表。

到目前为止,我都被卡在查询中

var filteredCustomers = Customers.Where(x => x.Orders.Any(filteredorderIds.contains(y => y.Id)));

I have list say list of customers and inside each list there is another list of orders

Class Customer
{
int ID,
string Name
List<Order> orders
}

Class Order{
int ID,
string Name
}
Also have a integer list of filteredorderIds = {1,2,3,4}

I want to filter the list of customers who has got orderIds from filteredorderIds list.

So far I am stuck at query like

var filteredCustomers = Customers.Where(x => x.Orders.Any(filteredorderIds.contains(y => y.Id)));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北座城市 2025-02-04 14:01:53

请感谢@johnathan Barclay,因为他的发布速度比我输入的示例快

void Main()
{
    var customers = new List<Customer>(){
        new Customer(){
            ID =1,
            Name = "Cust1",
            orders = new List<Order>(){
                new Order(){ID = 4, Name = "o11"},
                new Order(){ID = 5, Name = "o12"},
                new Order(){ID = 6, Name = "o13"}
            }
        },
        new Customer(){
            ID = 2,
            Name = "Cust2",
            orders = new List<Order>(){
                new Order(){ID = 3, Name = "o21"},
                new Order(){ID = 7, Name = "o22"},
                new Order(){ID = 8, Name = "o23"}
            }
        }
    };

    customers.Where(w =>
            w.orders.Any(w => filteredorderIds.Contains(w.ID))
    ).Dump();
}

List<int> filteredorderIds = new List<int>() { 1, 2, 3, 4 };

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Order> orders { get; set; }
}

public class Order
{
    public int ID { get; set; }
    public string Name { get; set; }
}

”在此处输入图像说明”

please give credit to @Johnathan Barclay, since he posted faster than i typed example

void Main()
{
    var customers = new List<Customer>(){
        new Customer(){
            ID =1,
            Name = "Cust1",
            orders = new List<Order>(){
                new Order(){ID = 4, Name = "o11"},
                new Order(){ID = 5, Name = "o12"},
                new Order(){ID = 6, Name = "o13"}
            }
        },
        new Customer(){
            ID = 2,
            Name = "Cust2",
            orders = new List<Order>(){
                new Order(){ID = 3, Name = "o21"},
                new Order(){ID = 7, Name = "o22"},
                new Order(){ID = 8, Name = "o23"}
            }
        }
    };

    customers.Where(w =>
            w.orders.Any(w => filteredorderIds.Contains(w.ID))
    ).Dump();
}

List<int> filteredorderIds = new List<int>() { 1, 2, 3, 4 };

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<Order> orders { get; set; }
}

public class Order
{
    public int ID { get; set; }
    public string Name { get; set; }
}

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文