C# 使用lambda筛选列表
我有一个对象,它有属性ID、brandID、brandName、NumPages和Type 我需要显示前5名品牌的numPage大小,一个品牌可能有多个ID,所以我需要按品牌分组C# 使用lambda筛选列表,c#,list,lambda,C#,List,Lambda,我有一个对象,它有属性ID、brandID、brandName、NumPages和Type 我需要显示前5名品牌的numPage大小,一个品牌可能有多个ID,所以我需要按品牌分组 listing.OrderByDescending(o => o.numPage).GroupBy(o=> o.brandName).Take(5).ToList(); 只有一行是我要找的,但这不是有效的代码。听起来一个给定的品牌名称可能有几个ID,并且您希望前5个品牌按numPage排序。对吗 如果是
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)
将选择退出该组所基于的原始品牌名
,刚刚尝试过并且可以工作:
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);
listing1=newlisting(){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 ALLISTINGS=new List(){listing1,listing2,listing3,listing4};
var result=allListings.OrderByDescending(x=>x.NumPages).GroupBy(x=>x.BrandName).Take(5);
为什么无效?您是否收到错误消息或只是没有得到想要的结果。I分组
没有numPage
成员,因此不应该编译。@hvd我在Visual Studio中验证了这是编译的。我的一个早期版本有一个打字错误,但当前版本应该可以。是的,我的评论是基于.OrderByDescending(x=>x.numPage.Sum())
,您确实已经修复了该错误。@hvd我想每次我交给角色groupby时,我都会被这个错误咬到:(我得到一个Arguement null执行,它不是有效的代码,我应该提到它而不是var查询,我在一个从返回视图调用的viewModel中这样做(newviewmodel(listing.GroupBy…),但这不会有什么区别