2015-09-27 30 views
0

IEnumerable的屬性我有這些類:類帶內的另一個的IEnumerable

public class InitialData 
{   
    public IEnumerable<Employee> Employees { get; set; }   
} 

public class Employee 
{ 
    public int Id { get; set; } 
    public string Name { get; set; }   
    public IEnumerable<Orders> Orders { get; set; } 
} 

public class Orders 
{   
    public int OrderId { get; set; } 
    public int Number { get; set; } 
} 

我有一個返回兩個結果這樣

Id Name 
-- ---- 
1 John 
2 Marc 
3 Bruce 

Id OrderId Number 
-- ------- ------ 
1 1  23423 
1 2  56777 
2 3  44445 

第二結果集的存儲過程具有的Id的關係員工,員工標識3沒有任何順序。

我想獲取所有訂單,並將它們放入沒有員工編號的員工類中, 只是OrderId和Number,因爲對於每個員工,我將有一個包含OrderId和Number的訂單屬性,因此我知道哪些員工屬於

在我的倉庫,我有:

var model = new InitialData(); 

using (var db = new AuditContext()) 
{ 
    var cmd = db.Database.Connection.CreateCommand(); 

    cmd.CommandText = "[dbo].[EnployeeDataSelect]"; 
    cmd.CommandType = CommandType.StoredProcedure; 

    try 
    { 
     db.Database.Connection.Open(); 
     var reader = cmd.ExecuteReader(); 

     reader.NextResult(); 
     model.Employees = ((IObjectContextAdapter)db).ObjectContext.Translate<Employees>(reader).ToList(); 

     Now how can I put the orders under the Employees property of InitialData class filter each with the Id? 
     ??? 
    } 
    catch (Exception e) 
    { 
    } 
} 

我想過濾我的命令爲每個員工,把他們在服用算我從存儲過程獲得的結果屬性訂單內。

回答

0

除了將員工ID放入您的訂單類中之外,我不認爲您有很多選擇。

class Order 
{ 
    public int Id {get; set;} 
    public int OrderId {get; set;} 
    public int Number {get; set; 
} 
... 
var oc = (IObjectContextAdapter)db).ObjectContext; 
var orders = oc.Translate<Order>(reader).ToLookup(x => x.Id); 
foreach(var employee in model.Employees) 
    employee.Orders = orders[employee.Id].ToList(); 

如果絕對不想給員工id屬性添加到您的Order類,你必須創建另一個類(如EmployeeOrder),有僱員id屬性並將其映射回Order

class EmployeeOrder 
{ 
    public int Id {get; set;} 
    public int OrderId {get; set;} 
    public int Number {get; set; 
} 
... 
var orders = oc.Translate<EmployeeOrder>(reader).ToLookup(x => x.Id); 
employee.Orders = orders[employee.Id].Select(x => new Order 
{ 
    OrderId = x.OrderId, 
    Number = x.Number 
}.ToList(); 
相關問題