LINQ Group以及包含元素的列表的百分比

时间:2013-05-04 01:21:37

标签: 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}
}

1 个答案:

答案 0 :(得分:5)

你想要这样的东西

    [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);
    }