Nasıl Yineleme Sayısı bu SERİ ile Listesinde
Öğelerin bir listesi var
- John NUMARASI
- Matt KİMLİĞİ
- John NUMARASI
- Scott KİMLİĞİ
- Matt KİMLİĞİ
- John NUMARASI
- Lucas KİMLİĞİ
Onları geri de çiftleri en yüksek numarasına göre sıralamak istiyorum yani böyle bir liste içine sokmak istiyorum.
- John NUMARASI 3
- Matt NUMARASI 2
- Scott KİMLİK Numarası 1
- Lucas KİMLİK Numarası 1
Bana bunu daha ne kadar yapabilirim ETMENİZ ve C ile haber#.
Teşekkürler
2 Gösteren Kod DÜZENLE:
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();
Bu görüntüler bu sorgu sonuçlar:
- 1 Merhaba Dünya kez
- 1 Merhaba Dünya kez
- 1 Merhaba Dünya.
- 1 Merhaba Dünya kez
- 1 Merhaba Dünya kez
- 1 Merhaba Dünya kez
- 1 Merhaba Dünya.
- 1 Merhaba Dünya kez
Beni sayıp adını verir, ama bana oyun ID vermez....
Ekran:
- Merhaba 6 kez dünya 234234
- 2 Merhaba Dünya. 23432432
CEVAP
Kullanabilirsiniz "grup" "". orderby Ayrıntılar için LINQ 101 bkz
var list = new List<string> {"a", "b", "a", "c", "a", "b"};
var q = from x in list
group x by x into g
let count = g.Count()
orderby count descending
select new {Value = g.Key, Count = count};
foreach (var x in q)
{
Console.WriteLine("Value: " x.Value " Count: " x.Count);
}
Yanıt this post (şimdi silinmiş):
Eğer bazı özel nesneler listesi varsa o zaman özel mülkiyet tarafından custom comparer veya grup kullanmanız gerekir.
Ayrıca sorgu sonucu gösteremiyor. Bize kod daha iyi bir yardım almak için tam gösteriyor.
Son güncelleme:
Bu kod satırı vardır:
group xx by xx into g
Xx beri nesne sistemi birbirine öğe karşılaştırmak için nasıl bilmiyor bir özel. Zaten yazdığı gibi, derleyici kılavuzu ve nesneler için bazı özellik karşılaştırma sağlamak veya özel karşılaştırıcısı sağlamak gerekir. İşte bir örnek:
Ben kullandığını unutmayınFoo.Adı- yani nesneler bir anahtar değere göre gruplandırılmış olacakAdıözellik.
Bir catch - 2 nesneleri çoğaltmak için tedavi adlarına göre var, ama Kimliği ne olacak ? Benim örnekte ben sadece bir grupta ilk nesne Kimliği. Eğer nesneleri farklı Kimlikleri varsa, bir sorun olabilir.
//Using extension methods
var q = list.GroupBy(x => x.Name)
.Select(x => new {Count = x.Count(),
Name = x.Key,
ID = x.First().ID})
.OrderByDescending(x => x.Count);
//Using LINQ
var q = from x in list
group x by x.Name into g
let count = g.Count()
orderby count descending
select new {Name = g.Key, Count = count, ID = g.First().ID};
foreach (var x in q)
{
Console.WriteLine("Count: " x.Count " Name: " x.Name " ID: " x.ID);
}
Nasıl bash sayı değişkenleri tarafında...
Nasıl Python listesinde bir öğenin yin...
Nasıl bash script değişkenler üzerinde...
Nasıl VS2013 başvuru sayısı, gizlemek ...
Nasıl Java Listesinde Haritası dönüştü...