我有一些會計應用程序,它允許創建文檔併爲其添加一些位置(行/行)。 這裏的控制器來獲得特定文檔的那些行:結合不同的查詢
public JsonResult GetIncDocDetails(long id, int pagesize, int pagenum)
{
var dbResult = db.fooIncDocDetail.Where(d => d.DocumentID == id).Where(d => d.RecordStatusID != 2).Include(f => f.fooFood).
OrderBy(d => d.Date).
Select(s => new
{
s.IncDocDetailID,
s.FoodID,
s.MeasureUnit,
s.Amount,
s.Price,
s.VATRate,
s.Excise,
s.DocumentID,
s.UserID,
s.RecordDate,
s.RecordStatusID,
s.Date,
s.FoodName,
s.DetailNumber,
fooFoodName = s.fooFood.Name
}).Skip(pagesize * pagenum).Take(pagesize);
return Json(dbResult, JsonRequestBehavior.AllowGet);
}
所以,我想通過這個控制器,如一些更多的信息:
這個特殊的文件中的所有行的總和:
Summa = db.fooIncDocDetail.Where(d => d.DocumentID == id). Where(d => d.RecordStatusID == 1). Sum(a => (decimal?)(a.Amount* a.Price)) ?? 0;
這個特殊的文件中的所有行的總計數:
這個特殊的文件Total = db.fooIncDocDetail.Where(d => d.DocumentID == id). Where(d => d.RecordStatusID != 2) .Count()
屬性:
Document = db.fooDocument.Where(d => d.DocumentID == id). Select(d => new { d.DocumentID, d.DocDate, d.RegNumber, d.UserID, d.RecordDate, d.RecordStatusID, d.RegistrationDate, d.Number, d.Description, d.ObjectID, d.DocumentTypeID, d.ContragentName, DocumentTypeName = d.fooDocumentType.Name })
但我怎麼能結合所有,在短短一個LINQ查詢,這是我寫的第一?謝謝
我不會嘗試將所有這些查詢合併成一個,而不是我想創建一個數據庫中的參數化存儲過程,並使用它。這可能會創造最少的開銷,因爲您只需發送一個查詢並獲得所有答案。 – Robert
「fooDocument」和「fooInDocDetail」不相關嗎?它們之間不應該有關係,所以你可以用'.Include()'加載所有相關的實體?既然你想要所有的細節,那麼在數據庫中執行聚合就不會使* all *有多大意義。一旦你在客戶端上有數據,你就可以執行你想要的任何類型的聚合。 –