【发布时间】:2019-05-09 16:36:25
【问题描述】:
这是我的 EF 查询。
抛出示例:无法比较“System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]”类型的元素。只有原始类型,枚举
所有参数已满。
public List<User> GetLawyersData(List<Guid> IdList, List<string> selectedCountries, List<string> selectedCities, List<string> selectedDistricts, List<string> selectedOccupations, List<string> selectedProfessions)
{
var result = (from u in _userDbContext
join ui in _userInformationDbContext
on u.Id equals ui.UserID
join d in _districtDbContext
on ui.DistrictId equals d.Id
join c in _cityDbContext
on d.CityID equals c.Id
join co in _countryDbContext
on c.CountryID equals co.Id
join uo in _userOccupationInformationDbContext
on u.Id equals uo.UserID
join oc in _occupationDbContext
on uo.OccupationID equals oc.Id
join up in _userProfessionDbContext
on u.Id equals up.UserID
join pr in _professionDbContext
on up.ProfessionID equals pr.Id
where IdList.Contains(u.Id) &&
(selectedCountries != null && selectedCountries.Count > 0 ? selectedCountries.Contains(co.AutoId.ToString()) : true) && (selectedCities != null && selectedCities.Count > 0 ? selectedCities.Contains(c.AutoId.ToString()) : true)
&& (selectedDistricts != null && selectedDistricts.Count > 0 ? selectedDistricts.Contains(d.AutoId.ToString()) : true)
&& (selectedOccupations != null && selectedOccupations.Count > 0 ? selectedOccupations.Contains(oc.AutoId.ToString()) : true)
&& (selectedProfessions != null && selectedProfessions.Count > 0 ? selectedProfessions.Contains(pr.AutoId.ToString()) : true)
select u).ToList();
return result;
我能做什么?
【问题讨论】:
-
注释掉
where子句的部分,一次一个。当异常停止时,您注释掉的最后一件事就是原因。原因是什么? -
需要更多细节。比如,这些
_xyzContext变量是什么?哪个EF版本? (有标签)。为什么你如此大规模地加入而不是使用导航属性? -
@GertArnold private DbSet
_piceAuthorDbContext;私有 DbSet _cityDbContext;私有 DbSet _countryDbContext;私有 DbSet _districtDbContext;私有 DbSet _userProfessionDbContext;私有 DbSet _professionDbContext; -
@GertArnold 这些在构造函数方法 _piceAuthorDbContext = _context.Set
(); _cityDbContext = _context.Set(); _countryDbContext = _context.Set (); _districtDbContext = _context.Set (); _userProfessionDbContext = _context.Set (); _professionDbContext = _context.Set (); -
@GertArnold EF 6.0 版本
标签: c# sql asp.net-mvc entity-framework linq