我需要一些帮助(因为我尝试在8岁休息后尝试学习C#)
我有两个表具有一对多的关系。
public class NewsCategory: IEntity
{
public int NewsCategoryId { get; set; }
public string NewsCategoryName { get; set; }
public News News { get; set; }
}
和新闻表
public class News: IEntity
{
public int NewsId { get; set; }
public string NewsHeader { get; set; }
public string NewsContent { get; set; }
public DateTime NewsReleaseDate => DateTime.Now;
public string NewsImgUrl { get; set; }
public int NewsCategoryId { get; set; }
public NewsCategory NewsCategory { get; set; }
}
NewsCategory.CategoryId分为8个选择。例如:健康,运动,旅行,时尚...并且Table.News必须在Category表中仅具有1 categoryid。
问题是如何从每个新闻类别中获取最后的条目?
例如:“健康”类别有10个条目,“运动”类别有20个条目...我想最后写的是今天。因此,我有8个类别的选择,那么我必须带回8个新闻。
我尝试了一些代码,但我始终无法到达。我最后的机会是向你们寻求帮助。
我尝试了一些在Internet上共享的代码,但是没有一个对我有用。
public class EFNewsDal : EFGenericRepository<News, AdvertContext>, INewsDal
{
public List<News> GetLastEachNewsWithCategories()
{
using (AdvertContext con = new AdvertContext())
{
// con.News.Include(x => x.NewsCategory).Where(x => x.NewsCategoryId == x.NewsCategory.NewsCategoryId).Reverse().Select(x => x.NewsCategoryId).Distinct().ToList();
//con.News.Include(x => x.NewsCategory).GroupBy(x => x.NewsCategoryId).Select(g => g.Last()).ToList();
//var query1= con.Set<News>().Include(x => x.NewsCategory).Where(x => x.NewsCategoryId == x.NewsCategory.NewsCategoryId).GroupBy(x=>x.NewsCategoryId);
//var query2 = query1.Select(g => g.Last());
// var query = from g in con.News
// where g.NewsCategoryId != 0
// group g by g.NewsCategoryId into grp
// select grp.OrderByDescending(g => g.NewsId).First();
// return query.ToList();
//} // con.News.Include(x => x.NewsCategory).Where(x => x.NewsCategoryId == x.NewsCategory.NewsCategoryId).GroupBy(x => x.NewsId).Select(grp => grp.LastOrDefault()).ToList();
}
}