當作業人員查看某些內容時,資料庫中的數字會增加 1。例子
abab : 1
cbcb : 1
dcdc: 1
abab : 1
abab : 1
我想列印誰在表格中查看了多少。例子
abab : 3
cbcb : 1
dcdc : 1
但它不像我想要的那樣作業。我寫的代碼在下面
Count = _viewHistoryRepository.GetByExpression(f => f.MemberId == c.MemberId).Sum(s=> s.ViewsCount)
輸出:
abab : 3
abab : 3
abab : 3
cbcb : 1
dcdc: 1
我希望每個名字都出現一次。謝謝
uj5u.com熱心網友回復:
那么你需要使用GroupBy:
IEnumerable<string> query = _viewHistoryRepository
.GroupBy(x => x.MemberId)
.Select(g => $"{g.Key} : {g.Sum(x => x.ViewsCount)}");
uj5u.com熱心網友回復:
很明顯你有一個類似的類:
class StaffMemberView
{
public string Name {get; set;}
public int ViewCount {get; set;} // in your input always 1
... // other properties
}
如果您的輸入確實始終具有值 1,則足以創建屬性 Name 具有相同值的 StaffMemberviews 組。在引數 resultSelector 中計算每組中的元素數:
IEnumerable<StaffMemberView> staffMemberViews = ...
var result = staffMemberViews.GroupBy(
// keySelector: make groups with the same value for Name:
staffMemberView => staffMemberView.Name,
// parameter resultSelector, for every Name, and all StaffMemberViews that
// have this Name, make one new:
(name, staffMembersViewsWithThisName) => new
{
Name = name,
ViewCount = staffMemberViewsWithThisName.Count(),
});
如果引數 ViewCount 有時不為 1,那么僅計算每個組中的 StaffMemberViews 是不夠的,您必須對 ViewCount 的值求和。
引數 resultSelector 變化:
(name, staffMembersViewsWithThisName) => new
{
Name = name,
ViewCount = staffMemberViewsWithThisName
.Select(staffMemberView => staffMemberView.ViewCount)
.Sum(),
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/388407.html
上一篇:洗掉包含初始字串一部分的所有出現
