我正在尝试将数据从LocalDb导入我的MVC控制器。我正在使用此代码,但不起作用:
public StatusCategory BranchIdSearch(string branch){
var categoryId = _context.StatusCategories
.Where(a => a.StatusCategoryTitle.Contains(branch))
.Select(a => a.StatusCategoryId)
.ToList();
return categoryId;
}
错误:
CS0029无法将类型'System.Collections.Generic.List'隐式转换为'ProjectName.Data.Models.StatusCategory
StatusCategory.cs文件:
public class StatusCategory
{
[Key]
public int StatusCategoryId { get; set; }
public string StatusCategoryTitle { get; set; }
public virtual IEnumerable<Status> Status { get; set; }
}
LocalDb表:
StatusCategory Table Structure
需要帮助,为什么不起作用?
您正在检索List<int>
,而不是单个StatusCategory
。要检索单个对象或值,必须使用FirstOrDefault
。将查询更改为此以检索单个完整对象:
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.FirstOrDefault();
return categoryId;
如果您真的只需要Id,则必须更改返回类型和查询:
public int BranchIdSearch(string branch){
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.Select(a => a.StatusCategoryId)
.FirstOrDefault();
return categoryId;
}
您正在选择List<int>
而不是单个StatusCategory
您可以直接使用FirstOrDefault
或Single
FirstOrDefault
将返回找到的对象或为空
[Single
将返回该对象,或者如果存在一个以上条件的对象,则抛出异常
public StatusCategory BranchIdSearch(string branch){
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.FirstOrDefault(a => a.StatusCategoryId);
return categoryId;
}
public StatusCategory BranchIdSearch(string branch){
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.Single(a => a.StatusCategoryId);
return categoryId;
}
您正在尝试返回许多列表,但您的函数说应该返回一个列表。
如果要返回一个StatusCategory
。
public StatusCategory BranchIdSearch(string branch){
return _context.StatusCategories.FirstOrDefault(a => a.StatusCategoryTitle.Contains(branch));
}
如果要返回一个StatusCategoryId
public int? BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).Select(a => (int?)x.StatusCategoryId).FirstOrDefault();
}
如果要返回很多StatusCategory
。
public IList<StatusCategory> BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).ToList();
}
如果要返回很多StatusCategoryId
public IList<int> BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).Select(a => x.StatusCategoryId).ToList();
}