Tôi có một danh sách các mụcLàm thế nào để đếm Lặp lại trong Danh sách với LINQ
- John ID
- Matt ID
- John ID
- Scott ID
- Matt ID
- John ID
- Lucas ID
Tôi muốn đưa chúng trở lại danh sách như vậy cũng có nghĩa là tôi muốn sắp xếp theo số lượng bản sao cao nhất.
- John ID 3
- Matt ID 2
- Scott ID 1
- Lucas ID 1
Hãy cho tôi biết làm thế nào tôi có thể làm điều này với LINQ và C#.
Cảm ơn tất cả
EDIT 2 kết Code:
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();
truy vấn này sẽ hiển thị các kết quả này:
- 1 chào lần thế giới
- 1 chào lần thế giới
- 1 Xin chào thế giới.
- 1 chào lần thế giới
- 1 chào lần thế giới
- 1 chào lần thế giới
- 1 Hello World.
- 1 chào lần thế giới
Nó mang lại cho tôi số lượng và tên, nhưng nó không cho tôi ID của trò chơi ....
Nó sẽ hiển thị:
- 6 xin chào thế giới lần 234234
- 2 Xin chào thế giới. 23432432
cho kết quả rõ ràng là chương trình xử lý tất cả các mục của bạn là khác biệt - như tôi đã nói, bạn cần triển khai tùy chỉnh so sánh, nếu không thì không thể chọn các giá trị riêng biệt – aku