我有一個對象,它具有屬性ID,brandID,brandName,NumPages和Type。使用lambda篩選列表
我需要顯示前5個品牌被numPage大小,一個品牌可能有多個ID,所以我需要按品牌
listing.OrderByDescending(o => o.numPage).GroupBy(o=> o.brandName).Take(5).ToList();
是孤獨的什麼即時尋找的線條,但這不是有效的代碼。
我有一個對象,它具有屬性ID,brandID,brandName,NumPages和Type。使用lambda篩選列表
我需要顯示前5個品牌被numPage大小,一個品牌可能有多個ID,所以我需要按品牌
listing.OrderByDescending(o => o.numPage).GroupBy(o=> o.brandName).Take(5).ToList();
是孤獨的什麼即時尋找的線條,但這不是有效的代碼。
這聽起來像一個給定的品牌名稱可能有幾個ID,並且你想要前5名品牌按numPage排序。是正確的
如果是的話請嘗試以下
var query = listing
.GroupBy(x => x.brandName)
.OrderByDescending(brands => brands.Sum(x => x.numPage))
.Select(x => x.Key)
.Take(5);
注:GroupBy
操作後你現在繞過品牌的集合對象,而不是單一的。因此,要訂購numPage
,我們需要對該組中的所有品牌對象進行求和。該.Select(x => x.Key)
將選擇背出哪個組是基於
只是嘗試了全新的brandName
和它的作品:
public class Listing
{
public int ID { get; set; }
public int BrandID { get; set; }
public string BrandName { get; set; }
public int NumPages { get; set; }
public Type Type { get; set; }
}
這裏過濾
Listing listing1 = new Listing() { NumPages = 2, BrandName = "xx" };
Listing listing2 = new Listing() { NumPages = 2, BrandName = "xx" };
Listing listing3 = new Listing() { NumPages = 2, BrandName = "xx" };
Listing listing4 = new Listing() { NumPages = 3, BrandName = "xxxxx" };
List<Listing> allListings = new List<Listing>() { listing1, listing2, listing3, listing4 };
var result = allListings.OrderByDescending(x => x.NumPages).GroupBy(x => x.BrandName).Take(5);
爲什麼它沒有被有效?你是否收到錯誤信息或者沒有得到想要的結果。 – 2012-01-14 00:18:30