[C#]用LINQ計算陣列中項目出現的次數

[C#]用LINQ計算陣列中項目出現的次數

假設 資料內容 只有書名,出現幾次 是代表 賣出幾本,

我要知道所有書的銷量就要計算出,每本書出現幾次,透過以下code

就可得知 所有書的銷量,如果只要挑出銷量>2的,則程式只要改成

 

            var q =
from p in Books
group p by p.ToString() into g
where g.Count() > 2  //只顯示超過兩次以上的
select new
{
    g.Key,
    NumProducts = g.Count()
};

這樣就可以了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> Books = new List<string> { 
".NET 網路與 I/O 技術手冊                 ",
".NET 網路與 I/O 技術手冊                 ",
".NET通訊介面開發與應用                   ",
".NET通訊介面開發與應用                   ",
"Visual C# 2010與UML開發實戰              ",
"Visual C# 2010與UML開發實戰              ",
"Visual C# 2010與UML開發實戰              ",
"Visual C#2010 程式設計實例演練與系統開發 ",
"Visual C#2010 程式設計實例演練與系統開發 ",
"Visual C#2010 程式設計實例演練與系統開發 ",
"Visual C#2010 程式設計實例演練與系統開發 "
            };
            var q =
from p in Books
group p by p.ToString() into g
select new
{
    g.Key,
    NumProducts = g.Count()
};
            foreach (var x in q)
            {
                Console.WriteLine(x);//顯示 所有書的銷量
            }
            Console.ReadLine();
        }
    }
}

 


如有錯誤 歡迎指正