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每个客户的每个数组.
如果不是必需的,请从“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 时,最好处理对象,而不是处理表和行,这样不会造成混乱。