c# - 获取特定标准和其他标准的计数和平均值

标签 c# linq

我的数据格式如下..

    UserId    Property1      Property2     Property3   Testval
    1         1              1             10          35
    2         1              2             3           45
    3         2              5             6           55
and so on..

我有几个标准,下面是几个例子..

a) Where Property1=1 and Property3=10
b) Where Property1!=1 and Property2=5

我需要的是符合这些标准的用户数和测试平均值,以及所有其他不符合这些标准的用户数。

因此,结果数据结构如下..

User Count

Criteria         Users     
a                100
b                200
rest             1000

TestVal Average

Criteria         avg    
a                25
b                45
rest             15

我知道如何分别获取特定条件的用户列表。

data.Where(w=>w.Property1==1).Select(s=>s.UserId).ToList()

但是我如何获得 usercount 和 avg val 以及更重要的是对于其他用户来说相同。

真诚感谢任何帮助

谢谢

最佳答案

看起来您正在寻找按条件分组。像这样:

var result = data.GroupBy(x => 
    x.Property1 == 1 && x.Property3 == 10 ? 0 :
    x.Property1 != 1 && x.Property2 == 5 ? 1 :
    // ...
    -1)
    .Select(g => new
    {
        Criteria = g.Key,
        Users = g.Count(),
        Avg = g.Average(x => x.Testval),
    })
    .ToList();

关于c# - 获取特定标准和其他标准的计数和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344477/

相关文章:

c# - 生成缩略图的最有效方法是什么?

c# - 如何视觉上连接2个圈子?

c# - 从集合继承和实现可枚举接口(interface)时,IEnumerable 扩展方法 (System.Linq) 不可用

entity-framework - 在 DB-First Approach 的调试窗口中记录所有 Entity Framework 查询

c# - 使用 LINQ 如何根据范围确定 IEnumerable 的优先级?

c# - 是什么 | (管道)在 C# 中是什么意思?

c# - 使用 html 编码或转义字符加载 XML 或 XHTML 内容

c# - 我可以将这三个相似的函数合并为一个函数吗?

c# - 根据另一个数组中指定的索引从数组中选择元素c#

c# - 如何在 C# 中通过解析 Xml 创建表达式树?