我正在尝试返回国家/地区列表,并将返回值分配给CountryCode和CountryName,我不断收到这些错误:
无法将类型'System.Collections.Generic.List隐式转换为'System.Linq.IQueryable'。存在显式转换(您是否错过了演员?)
和
运算符'=='不能应用于'string'和'System.Collections.Generic.List
类型的操作数这是我的代码:
public class CountryViewModel
{
public string CountryCode { get; set; }
public string CountryName { get; set; }
/*SELECT COUNTRIES */
public static IQueryable<CountryViewModel> GetCountries()
{
DbEntities _context = new DbEntities();
var featureCode = "PCLI";
var countries = _context.country
.Where(c => c.Feature_Code == featureCode
.Select(n => new CountryViewModel
{
CountryCode = c.Country_Code,
CountryName = c.Name
}
));
return countries;
}
我找不到合适的例子来帮助我,任何帮助都会受到赞赏。
答案 0 :(得分:0)
我认为.Where子句的结束“)”应该在“featureCode”之后,就在.Select之前。错误消息听起来像假设Select子句是条件的一部分。
答案 1 :(得分:0)
在您的示例中,您要返回的变量“countries”是IEnumerable,而不是您原型化的IQueryable。我想你可以返回countries.AsQueryable()。如果要返回列表,则返回countries.ToList()。
答案 2 :(得分:0)
据我所见,您的代码有些问题。另外我假设DbEntities
实现IDisposable
所以你应该把它包装在using
语句中。
public class CountryViewModel
{
public string CountryCode { get; set; }
public string CountryName { get; set; }
public static IQueryable<CountryViewModel> GetCountries()
{
using (DbEntities _context = new DbEntities())
{
var featureCode = "PCLI";
var countries = _context.country
.Where(c => c.Feature_Code == featureCode)
.Select(c => new CountryViewModel
{
CountryCode = c.Country_Code,
CountryName = c.Name
}
);
return countries;
}
}
}