我有一個表讓我們說產品其中包含兩列(ProductId,Price)。我從客戶端(IOS,Android)獲取產品ID列表。而不是遍歷列表並逐個獲取價格,然後計算平均值,有沒有更好的方法來做到這一點?如何根據實體框架中的ID列表獲得平均值
2
A
回答
2
如果我理解正確,你有一個產品ID列表,並希望得到所選產品的平均價格。您可以使用Contains
和Average
組合是這樣的:
List<int> productIds = ...;
var averagePrice = db.Products
.Where(p => productIds.Contains(p.ProductId))
.Select(p => p.Price)
.DefaultIfEmpty()
.Average();
的Select
其次DefaultIfEmpty
是需要避免的異常時,過濾集不包含任何記錄。
更新:按照意見,得到幾個積累了與一個單一的查詢,也可以通過使用group by
恆結構:
var info = (from p in db.Products
where productIds.Contains(p.ProductId)
group p by 0 into g // any constant would work
select new
{
MinPrice = g.Min(p => p.Price),
MaxPrice = g.Max(p => p.Price),
AveragePrice = g.Average(p => p.Price),
}).FirstOrDefault();
var minPrice = info != null ? info.MinPrice : 0;
var maxPrice = info != null ? info.MaxPrice : 0;
var averagePrice = info != null ? info.AveragePrice : 0;
1
var average = ProductList.Select(p => p.Price).Average();
相關問題
- 1. 如何根據另一列獲得列的平均值?
- 2. 如何獲得所選列的平均值(平均值)
- 3. 如何獲得表中某些列值的平均值
- 4. 獲得一個列表的平均值
- 5. 如何獲得平均值
- 6. 我如何從實體框架中獲得自動ID
- 7. 如何獲得的LINQ /實體框架
- 8. 如何獲取實體框架中插入實體的ID?
- 9. 獲取ID值與實體框架
- 10. 使用列表獲得平均值
- 11. 如何獲得數據幀列值的平均值
- 12. 根據列平均值更新列值
- 13. MySQL - 獲得列中的平均值
- 14. 數據框列表中列的中值的平均值
- 15. 通過實體框架中的ID獲取元素列表
- 16. 如何獲得連接表數據實體框架
- 17. 如何根據另一列的值得到一列的平均值?
- 18. 如何獲得從CoreData中取平均數的實體屬性
- 19. 如何獲得具有核心數據的列的平均值?
- 20. 獲得在實體框架
- 21. 如何在C++中獲得平均值?
- 22. 如何獲得實體框架中的字符串列的最大值
- 23. sql。獲得最大值(平均值(列))
- 24. 如何使用linq獲取列表中列表的平均值?
- 25. 如何獲得DATEDIFF()的平均值?
- 26. 如何獲得日期的平均值
- 27. 如何獲得數組的平均值?
- 28. 實體框架:如何獲得TPT或TPH實體的EntitySetName
- 29. 如何獲得實體框架中SQL Server序列的下一個值?
- 30. R - 獲得列組合的平均值
感謝伊萬,只是想知道,是有可能得到最小值,最大值和平均值在一個單一的查詢? –
我認爲這是可能的,雖然在LINQ中不太自然。我記得,需要使用'group by * * constant *'來生成多個聚合。 –
檢查更新。乾杯:) –