【发布时间】:2021-02-17 20:09:30
【问题描述】:
所以我有了这个运行良好的小控制器。唯一的问题是,StateLocation OrderId 在返回的字符串中乱序。
[HttpGet("GetLocationsByLanguageId/{id}")]
public async Task<ActionResult<IEnumerable<LanguageList>>> GetLocationsByLanguageId(Guid id)
{
var choicesByLanguage = await _context.LanguageList.Where(q => q.LanguageId == id)
.Include(p => p.StateLocation)
.ToListAsync();
return choicesByLanguage;
}
所以我去了 Microsoft Entity Framework 网站阅读有关订购的信息,发现:
https://docs.microsoft.com/en-us/ef/core/querying/related-data/eager
所以我添加了一个OrderBy 子句,如下所示:
[HttpGet("GetLocationsByLanguageId/{id}")]
public async Task<ActionResult<IEnumerable<LanguageList>>> GetLocationsByLanguageId(Guid id)
{
var choicesByLanguage = await _context.LanguageList.Where(q => q.LanguageId == id)
.Include(p => p.StateLocation
.OrderBy(p => p.OrderId))
.ToListAsync();
return choicesByLanguage;
}
我在构建时没有收到任何错误,但是当我尝试访问该站点时,我得到了这个:
“System.Linq.IOrderedQueryable”类型的表达式不能用于 返回类型'System.Linq.IOrderedEnumerable
所以我四处寻找,在这里找到了一些可能的解决方案:
OrderBy and List vs. IOrderedEnumerable
但这些都不起作用,它们只是产生了新的错误或原始错误的变体。
在使用 .Net Core 3 时,我无法找到任何有助于解决此问题的答案。大多数答案都是针对旧版本的。
有没有人能够解决这个 .Net Core Entity Framework 3.0?
谢谢!
型号:
public partial class LanguageList
{
public LanguageList()
{
StateLocation = new HashSet<StateLocation>();
}
public Guid LanguageId{ get; set; }
public string LanguageName { get; set; }
public virtual ICollection<StateLocation> StateLocation { get; set; }
}
public partial class StateLocation
{
public Guid StateId { get; set; }
public Guid LanguageId { get; set; }
public string StateName { get; set; }
public string StateCapital { get; set; }
public int OrderId { get; set; }
public virtual LanguageList Language { get; set; }
}
【问题讨论】:
-
你能显示 StateLocation 和 LanguageList 类吗?
-
你能再检查一下你的语法吗?你在最后一个代码块中有一个
)太多 -
@Xerillio 哎呀,谢谢,当我在 SO 上输入它时只是一个错字。 :)
-
@Sergey 是的,刚刚添加!谢谢!
-
不确定订购包含...
标签: c# entity-framework linq .net-core entity-framework-core