Error : CS0029 Cannot implicitly convert type 'System.Collections.Generic.List<int>' to 'X'?
Error : CS0029 Cannot implicitly convert type 'System.Collections.Generic.List<int>' to 'X'?
我正在尝试将数据从 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 Cannot implicitly convert type 'System.Collections.Generic.List' to '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 Table :
StatusCategory Table Structure
需要帮助,知道为什么它不起作用吗?
您检索的是 List<int>
而不是单个 StatusCategory
。要检索单个对象或值,您必须使用 FirstOrDefault
。将您的查询更改为此以检索单个完整对象:
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.FirstOrDefault();
return categoryId;
如果您真的只想要 ID,那么您必须更改 return 类型和查询:
public int BranchIdSearch(string branch){
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.Select(a => a.StatusCategoryId)
.FirstOrDefault();
return categoryId;
}
您正在尝试 return 多个,即一个列表,但您的函数表示它应该 return 一个。
如果你想return一个StatusCategory
.
public StatusCategory BranchIdSearch(string branch){
return _context.StatusCategories.FirstOrDefault(a => a.StatusCategoryTitle.Contains(branch));
}
如果你想return一个StatusCategoryId
public int? BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).Select(a => (int?)x.StatusCategoryId).FirstOrDefault();
}
如果你想return很多StatusCategory
。
public IList<StatusCategory> BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).ToList();
}
如果你想return很多StatusCategoryId
public IList<int> BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).Select(a => x.StatusCategoryId).ToList();
}
您选择的是 List<int>
而不是单个 StatusCategory
可以直接使用FirstOrDefault
或Single
FirstOrDefault
将 return 找到的对象或 null
Single
将 return 对象或抛出异常,如果有超过一个对象符合条件
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;
}
我正在尝试将数据从 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 Cannot implicitly convert type 'System.Collections.Generic.List' to '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 Table :
StatusCategory Table Structure
需要帮助,知道为什么它不起作用吗?
您检索的是 List<int>
而不是单个 StatusCategory
。要检索单个对象或值,您必须使用 FirstOrDefault
。将您的查询更改为此以检索单个完整对象:
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.FirstOrDefault();
return categoryId;
如果您真的只想要 ID,那么您必须更改 return 类型和查询:
public int BranchIdSearch(string branch){
var categoryId = _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch))
.Select(a => a.StatusCategoryId)
.FirstOrDefault();
return categoryId;
}
您正在尝试 return 多个,即一个列表,但您的函数表示它应该 return 一个。
如果你想return一个StatusCategory
.
public StatusCategory BranchIdSearch(string branch){
return _context.StatusCategories.FirstOrDefault(a => a.StatusCategoryTitle.Contains(branch));
}
如果你想return一个StatusCategoryId
public int? BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).Select(a => (int?)x.StatusCategoryId).FirstOrDefault();
}
如果你想return很多StatusCategory
。
public IList<StatusCategory> BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).ToList();
}
如果你想return很多StatusCategoryId
public IList<int> BranchIdSearch(string branch){
return _context.StatusCategories.Where(a => a.StatusCategoryTitle.Contains(branch)).Select(a => x.StatusCategoryId).ToList();
}
您选择的是 List<int>
而不是单个 StatusCategory
可以直接使用FirstOrDefault
或Single
FirstOrDefault
将 return 找到的对象或 null
Single
将 return 对象或抛出异常,如果有超过一个对象符合条件
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;
}