C# 使用lambda表达式从一个列表中的一个列表获取值

C# 使用lambda表达式从一个列表中的一个列表获取值,c#,linq,lambda,C#,Linq,Lambda,我不熟悉lambda表达式,所以我尝试解决一个问题,但我不能。那么,谁能为这个问题提出解决方案呢 我有一类顾客。在内部,我创建了另外3个类,并为3个类创建了可观察集合。我为这个客户创建了一个可观察集合 ObservableCollection<Customer> customer2; public class Customer { public string CusName { get; set; } public int CusAge

我不熟悉lambda表达式,所以我尝试解决一个问题,但我不能。那么,谁能为这个问题提出解决方案呢

我有一类顾客。在内部,我创建了另外3个类,并为3个类创建了可观察集合。我为这个客户创建了一个可观察集合

ObservableCollection<Customer> customer2;

   public class Customer
    {
        public string CusName { get; set; }
        public int CusAge { get; set; }
        public ObservableCollection<Bankdetails> bankdetails;
        public ObservableCollection<order> orderlist;
        public ObservableCollection<orderdetails> orderdetailslist;

        public class Bankdetails
        {
            public string Bankaccno { get; set; }
            public string bankname { get; set; }
            public int bankid { get; set; }
        }

        public class order
        {
            public string ordername { get; set; }
            public string orderid { get; set; }

        }

        public class orderdetails
        {
            public string orderid { get; set; }
            public string itemname { get; set; }
            public int itemqty { get; set; }

        }

    }

那么lambda查询将是什么。请任何人提出建议。

马特的解决方案扩展为
,问题中的
将是:

var xxx = customer2.SelectMany(cus =>
    cus.bankdetails.SelectMany(bank => 
        cus.orderlist.SelectMany(ord => 
            cus.orderdetailslist.Select(orddet => new
                {
                    cus.CusAge,
                    cus.CusName,
                    bank.Bankaccno,
                    bank.bankname,
                    orddet.itemname,
                    orddet.itemqty
                }
            )
        )
    )
);
var xxx = customer2.SelectMany(cus =>
    cus.bankdetails.SelectMany(bank => 
        cus.orderlist.SelectMany(ord => 
           cus.orderdetailslist.Where(orddet => orddet.orderid == ord.orderid)
              .Select(orddet => new
                {
                    cus.CusAge,
                    cus.CusName,
                    bank.Bankaccno,
                    bank.bankname,
                    orddet.itemname,
                    orddet.itemqty
                }
            )
        )
    )
);

这里
Nixex09
如果你正在学习Lambda的,那么开始阅读这里我真的不明白这个问题。你到底想做什么?为什么您编写的查询不适合您?你想要什么结果?您实际得到了什么结果?当您正在学习LINQ时,请尝试使用LINQPad。它的一个功能是能够向您显示查询表达式的Lambda版本。谢谢…您收到了我的问题。这只是为了学习。无论如何,您节省了我很多时间。我们如何在此表达式中添加“where”条件
var xxx = customer2.SelectMany(cus =>
    cus.bankdetails.SelectMany(bank => 
        cus.orderlist.SelectMany(ord => 
            cus.orderdetailslist.Select(orddet => new
                {
                    cus.CusAge,
                    cus.CusName,
                    bank.Bankaccno,
                    bank.bankname,
                    orddet.itemname,
                    orddet.itemqty
                }
            )
        )
    )
);
var xxx = customer2.SelectMany(cus =>
    cus.bankdetails.SelectMany(bank => 
        cus.orderlist.SelectMany(ord => 
           cus.orderdetailslist.Where(orddet => orddet.orderid == ord.orderid)
              .Select(orddet => new
                {
                    cus.CusAge,
                    cus.CusName,
                    bank.Bankaccno,
                    bank.bankname,
                    orddet.itemname,
                    orddet.itemqty
                }
            )
        )
    )
);