2016-08-18 54 views
0

我有以下查詢:使用lambda插入派生屬性爲IQueryable的數據集

IQueryable<BarcodeQuery> barcodes = db.Barcodes.Select(b => new BarcodeQuery 
{ 
    id = b.id, 
    category_id = b.category_id, 
    ... 
    checkout = b.Checkouts.Select(c => new CheckoutChild 
    { 
     id = c.id, 
     loanee_id = c.loanee_id, 
     ... 
    }) 
    .Where(c => c.datein == null) 
    .FirstOrDefault() 
}); 

等。它是基於這個模型:

public class BarcodeQuery 
{ 
    public int id { get; set; } 
    public int category_id { get; set; } 
    ... 
    public CheckoutChild checkout { get; set; } 
    public CheckoutStatus checkoutStatus { get; set; } 
} 

我的問題是關於CheckoutStatus那裏底部。它看起來像這樣:

public class CheckoutStatus 
{ 
    public string status { get; set; } 
    public int daysUntilDue { get; set; } 
    public int daysOverdue { get; set; } 
} 

所有這些值都從我從查詢獲取信息來源的 - 他們都不是在數據庫本身。將CheckoutStatus值插入每個barcode記錄的最佳方法是什麼?

我有一個函數,自己創建CheckoutStatus值,我只是不知道如何讓它們進入barcode記錄。

謝謝!

回答

0

如果b剛剛創建了new,那麼b.Checkouts如何包含內容?我並不真正瞭解你想做什麼。

EF正在將lambda表達式轉換爲SQL語句。因此,您只能使用實際可以轉換爲SQL的表達式。只需查詢數據庫中的條形碼,然後將缺少的信息添加到循環中返回的條形碼中即可。

var barcodes = db.Barcodes.Select(...).ToList(); 
foreach (Barcode b in barcodes) { 
    b.Checkouts = ... 
}