获取List <listitem> </listitem>中每个项目的百分比

时间:2015-01-16 10:03:57

标签: c# asp.net

我需要计算列表中每个项目与项目总数的百分比。假设我的列表包含三个项目:

  1. 是的,计数为0
  2. 不,数为0
  3. 不能说,算上1个
  4. optionsList.Count:3

    foreach (ListItem opt in optionsList)
    {
        double cnt = Convert.ToDouble(opt.Value);
        double totalCnt = Convert.ToDouble(optionsList.Count);
        double percentage = Math.Truncate((cnt/ totalCnt) * 100);
    
        results.InnerHtml += percentage.ToString() + " % " + opt.Text + " <br/>" + " <br/>";
    }
    

    输出:

    • 0%是
    • 0%否
    • 33%不能说

    在上面的结果中,如果是,否则为0,则结果应为100%但显示33%。

1 个答案:

答案 0 :(得分:1)

试试这个。这里的关键点是你应该除以count成员的SUM,而不是列表条目的数量。在你的例子中,totalCount总是3,所以 1/3 * 100 = 33%。实际上totalCount应该是0 + 0 + 1,所以你最终得到了 1/1 * 100 = 100%。

namespace ConsoleApplication
{
    public class Test
    {
        public string name { get; set; }
        public int count { get; set; }
    }


    class Program
    {
        static void Main(string[] args)
        {
                List<Test> testList = new List<Test>();
                testList.Add(new Test { name = "yes", count = 1 });
                testList.Add(new Test { name = "no", count = 0 });
                testList.Add(new Test { name = "can't say", count = 3 });


                var totalCount = testList.Sum(c => c.count);

                foreach(var item in testList)
                {
                    Console.WriteLine(string.Format("{0} {1}", (decimal)item.count / totalCount * 100, item.name));
                }

                Console.ReadKey();
        }
    }
}