2013-05-04 68 views
1

例子可能解释最简单的办法:我想我会用做内对与列表%的沿LINQ集团通过包含元素

{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} 
} 

回答

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); 
    } 
+0

谢谢,正是我需要的。 – Wilson 2013-05-04 01:30:16

+0

@威尔逊我更新了实际工作代码:) – 2013-05-04 01:30:49

+0

伪代码告诉我足够多哈哈,但谢谢不管。我会在一分钟内接受。 – Wilson 2013-05-04 01:34:50