使用联接字典对sql数据排序
本文关键字:sql 数据 排序 字典 | 更新日期: 2023-09-27 18:09:55
在SQL Server 2014我有一个表People
与列Country
(int not null
)。我想按Country
排序,但country是int型,我想按国家名称排序。我没有Contries
表在db.
var countryDict = new Dictionary<int, string>();
countryDict.Add((int)ECountry.AT, "Austria");
countryDict.Add((int)ECountry.IT, "Włochy");
.......
IQueryable<PeopleModel> result = _entity.People.Where(...)
现在我想加入我的DbSet与字典与国家id和国家名称
// there exception occurs
var resultWithCountryName = result
.Join(
countryDict,
p => (int)p.Country,
c => c.Key,
(p, c) => new { p, CountryName = c.Value })
.ToList();
result = resultWithCountryName
.OrderByDescending(p => p.Kraj)
.Select(p => p.p)
.AsQueryable();
毕竟我需要分页,所以我使用下面的代码。
var resultList = result
.Include(p => p.OtherTable) // nevermind
.Skip(searchCriteria.Offset)
.Take(searchCriteria.RowsOnPage)
.ToList();
当我执行join语句时,我得到异常
无法创建类型的常数值System.Collections.Generic.KeyValuePair 2[[系统。mscorlib Int32,Version = 4.0.0.0、文化=中立,都必须要]、[系统。字符串,mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]。这里只支持基本类型或枚举类型上下文。
我的问题是
为什么我得到这个错误?
也许我对这个问题的解决方法是错误的?
可能给。tolist ()/AsEnumerable()/AsQueryable()到People查询的末尾。
IQueryable<PeopleModel> result = _entity.People.Where(...).ToList();