c# - LINQ Group By 以及包含元素的列表的百分比

标签 c# linq list group-by

示例可能是最简单的解释方式:

{1,2,2,3}

成为

{
    {1,0.25}
    {2,0.5}
    {3,0.25}
}

我想我会使用一个简单的结构来做内部对。我了解使用 GroupBy 和所有内容,但是有没有办法在一个大的 LINQ 语句中创建这样的新列表?

另一个例子:

{'a','g','a','a','f'}

成为

{
    {'a',0.6}
    {'g',0.2}
    {'f',0.2}
}

最佳答案

你想要这样的东西

    [TestMethod]
    public void T()
    {
        var mySet = new List<string> { "a", "b", "a" };
        var set = from i in mySet
                  group i by i into g
                  select new { Item = g.Key, Percentage = ((double)g.Count()) / mySet.Count() };

        Assert.AreEqual(2, set.Count());
        Assert.AreEqual("a", set.First().Item);
        Assert.AreEqual(2.0/3, set.First().Percentage);
    }

关于c# - LINQ Group By 以及包含元素的列表的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369670/

相关文章:

c# - SQL 命令问题 (C# Winforms)

c# - Visual Studio 2017 中的高级代码格式化

c# - 使用 Linq 查找连续数字序列中变化点的索引

Python - 使用 Popen 中的列表作为命令

Python列表中的列表操作

c# - 无法在 gridview 中打开超链接位置

c# - 函数接受指向结构的指针

c# - 在我的 LIST 中排名位置的解决方案?

c# - 动态 Linq 按变量排序

python - 如何在 Python 中初始化空列表字典?