Linq to Entities子查询填充数组?

Clu*_*tch 5 c# linq asp.net linq-to-entities

linq的新手试图解决这个问题.我有以下表格:

Customer: Cust_Id, Name

Orders: Order_Id

CustomerOrders: Cust_Id, Order_Id

我有一个这样的课:

public class Customers
{
public List<Row> Rows { get; set; }

public Customers()
    {
        Rows = new List<Row>();
    }


    public class Row
    {
       public int Key { get; set; }
       public string Name { get; set; }
       public List<string> Order_Ids { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

Linq查询是这样的:

var query = from c in context.Customer
select new Customers.Row
{
    Key = c.Cust_Id,
    Name = c.Name,
    Order_IDs = List<string>( ?? )
};

foreach (var row in query)
{
    Customers.Rows.Add(row);
}

var serializer = new JavaScriptSerializer();
return serializer.Serialize(Customers);
Run Code Online (Sandbox Code Playgroud)

我有'??'的地方,我可以使用子查询或其他东西Order_Id从CustomerOrders表中获取一个列表吗?现在,我只能考虑在Customers填充后循环遍历表,然后再次查询DB以获取Order Id每个客户的每个数组.

Did*_*xis 3

如果不是必需的,请从“Customer”对象中删除“Row”集合。这应该足够了:

public class Customer
{
    public int Key { get; set; }
    public string Name { get; set; }
    public List<string> Order_Ids { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样查询:

var customers = from c in context.Customers
                select new Customer
                {
                    Key = c.Cust_Id,
                    Name = c.Name,
                    Order_IDs = c.Orders.Select(o => o.Order_Id).ToList()
                };
Run Code Online (Sandbox Code Playgroud)

在编写 C# 和使用 EF 时,最好处理对象,而不是处理表和行,这样不会造成混乱。