Мне нужна помощь (потому что я пытаюсь выучить C# после 8-летнего перерыва)
У меня есть две таблицы, которые имеют отношение 1 ко многим.
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 должен иметь только 1 categoryid из таблицы Category.
Вопрос в том, как я могу получить последние записи из каждой категории новостей?
Пример: в категории "Здоровье" было 10 записей, в категории "Спорт" - 20 записей ... Я хотел бы взять последние записи, написанные сегодня. Так как у меня 8 отборов по категориям, я должен вернуть 8 новостей.
Я попробовал несколько кодов, но не смог дозвониться ни в одну точку. Мой последний шанс - попросить помощи у вас, ребята.
Я попробовал несколько кодов, которыми поделились на inte rnet, но ни один из них не помог мне
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();
}
}
обновление:
Я попробовал записанный код.
return con.News.Include(x => x.NewsCategory)
.GroupBy(x => x.NewsCategoryId)
.Select(x => x.ToList().OrderByDescending(c => c.NewsReleaseDate).First()).ToList();
Но я получаю эту ошибку сейчас.
это может быть вызвано Core 3.0?