我有项目清单
- 约翰·爱德
- 马特ID
- 约翰·爱德
- 斯科特ID
- 马特ID
- 约翰·爱德
- 卢卡斯ID
我想将它们推回到类似的列表中,这也意味着我想按重复项的最高数量进行排序。
- 约翰ID 3
- 马特ID 2
- 斯科特ID 1
- 卢卡斯ID 1
让我知道如何使用LINQ和C#做到这一点。
谢谢大家
编辑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世界时你好
- 1世界时你好
- 1 Hello World。
- 1世界时你好
- 1世界时你好
- 1世界时你好
- 1 Hello World。
- 1世界时你好
它给了我计数和名称,但没有给我游戏的ID...。
它应该显示:
- 6 Hello World Times 234234
- 2 Hello World。23432432