我正在尝试使用LINQ计算列表中某项的出现,
我有以下架构-
用户(提供所有条目),计数(待计算)
计数应该像-
我想不出一个优雅的解决方案。
甚至可能只使用LINQ吗?如果没有,我们如何使用带有某些C#代码的LINQ来实现这一目标。
您可以结合使用loop和Enumerable.Take
,例如:
for (int i = 0; i < list.Count; i++)
{
//Get count of current element to before:
int count = list.Take(i+1)
.Count(r => r.UserName == list[i].UserName);
list[i].Count = count;
}
您list
的定义为:
List<User> list = new List<User>
{
new User{UserName = "A"},
new User{UserName = "B"},
new User{UserName = "A"},
new User{UserName = "A"},
new User{UserName = "B"},
new User{UserName = "A"},
new User{UserName = "C"},
new User{UserName = "A"},
};
并User
分类为:
public class User
{
public string UserName { get; set; }
public int Count { get; set; }
}
稍后您可以打印输出,如下所示:
foreach (var item in list)
{
Console.WriteLine("UserName: {0}, Running Total: {1}", item.UserName, item.Count);
}
您将获得:
UserName: A, Running Total: 1
UserName: B, Running Total: 1
UserName: A, Running Total: 2
UserName: A, Running Total: 3
UserName: B, Running Total: 2
UserName: A, Running Total: 4
UserName: C, Running Total: 1
UserName: A, Running Total: 5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句