計數重複的名單上有一個項目列表如何使用LINQ
- 約翰ID
- 馬特ID
- 約翰ID
- 斯科特ID
- 馬特ID
- 約翰·ID
- 盧卡斯ID
我想把它們推回到這樣的列表中,這也意味着我想按最大數量的重複進行排序。
- 約翰·ID 3
- 馬特ID 2
- 斯科特ID 1
- 盧卡斯ID 1
讓我知道我可以使用LINQ和C#這樣做。
感謝所有
EDIT 2顯示代碼:
List<game> inventory = new List<game>();
drinkingforDataContext db = new drinkingforDataContext();
foreach (string item in tbTitle.Text.Split(' '))
{
List<game> getItems = (from dfg in db.drinkingfor_Games
where dfg.game_Name.Contains(tbTitle.Text)
select new game
{
gameName = dfg.game_Name,
gameID = Boomers.Utilities.Guids.Encoder.EncodeURLs(dfg.uid)
}).ToList<game>();
for (int i = 0; i < getItems.Count(); i++)
{
inventory.Add(getItems[i]);
}
}
var items = (from xx in inventory
group xx by xx into g
let count = g.Count()
orderby count descending
select new
{
Count = count,
gameName = g.Key.gameName,
gameID = g.Key.gameID
});
lvRelatedGames.DataSource = items;
lvRelatedGames.DataBind();
此查詢顯示這些結果:
- 1的hello world次
- 1的hello world次
- 1 Hello World。
- 1的hello world次
- 1的hello world次
- 1的hello world次
- 1的Hello World。
- 1的hello world次
它給我的數量和名稱,但它並沒有給我的遊戲ID ....
它應該顯示:
- 6 hello world times 234234
- 2 Hello World。 23432432
給出你的結果很明顯,程序將所有的項目視爲不同的 - 正如我所說的,你需要實現自定義比較器,否則不可能選擇不同的值 – aku 2009-01-18 04:42:06