在SQL Server 2014中,我有一个表People
,其中包含列Country
(int not null
)。我想按Country
排序行,但country是int,我想按国家/地区名称排序。我在db。中没有Contries
表。
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 [[System.Int32,mscorlib, 版本= 4.0.0.0,文化=中立, PublicKeyToken = b77a5c561934e089],[System.String,mscorlib, Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'。 此处仅支持原始类型或枚举类型 上下文。
我的问题是
为什么会出现此错误?
也许我对这个问题的解决方案有误?
答案 0 :(得分:0)
可能会将.ToList()/ AsEnumerable()/ AsQueryable()提供给People查询结束。
IQueryable<PeopleModel> result = _entity.People.Where(...).ToList();