我有以下Entity Framework Core 3.0:
var units = await context.Units
.SelectMany(y => y.UnitsI18N)
.OrderBy(y => y.Name)
.GroupBy(y => y.LanguageCode)
.ToDictionaryAsync(y => y.Key, y => y.Select(z => z.Name));
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:
Client side GroupBy is not supported.
Run Code Online (Sandbox Code Playgroud)
如果未在客户端上运行查询,为什么会出现此错误?
要在客户端或客户端的一部分上运行查询,我将执行以下操作:
var units = context.Units
.SelectMany(y => y.UnitsI18N)
.OrderBy(y => y.Name)
.AsEnumerable()
.GroupBy(y => y.LanguageCode)
.ToDictionary(y => y.Key, y => y.Select(z => z.Name));
Run Code Online (Sandbox Code Playgroud)
现在可以了...
在 EF Core 2.2 中,我有:
var data = await _ArticleTranslationRepository.DbSet
.Include(arttrans => arttrans.Article)
.ThenInclude(art => art.Category)
.Where(trans => trans.Article != null && trans.Article.Category != null && trans.Article.Category.Id == categoryId.Value)
.GroupBy(trans => trans.ArticleId)
.Select(g => new { ArticleId = g.Key, TransInPreferredLang = g.OrderByDescending(trans => trans.LanguageId == lang).ThenByDescending(trans => trans.LanguageId == defaultSiteLanguage).ThenBy(trans => trans.LanguageId).FirstOrDefault() })
.Select(at => at.TransInPreferredLang)
.OrderBy(at => at.Article.SortIndex)
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
现在使用 EF Core 3.0 我不得不写:
var data = _ArticleTranslationRepository.DbSet
.Include(arttrans => arttrans.Article)
.ThenInclude(art => art.Category)
.Where(trans => trans.Article != null …Run Code Online (Sandbox Code Playgroud) c# entity-framework async-await entity-framework-core ef-core-3.0