无法将类型 System.Collections.generic 隐式转换为 <ProjectNamespace.List>
Cannot implicitly convert type System.Collections.generic to <ProjectNamespace.List>
namespace Automated_VotingSystem.Models
{
public class DisplayCandidatesList
{
public List<DisplayCandidates>? DisplayCandidateslist { get; set;}
}
}
namespace Automated_VotingSystem.Models
{
public partial class DisplayCandidates
{
public int VoterId { get; set; }
public int? CollegeId { get; set; }
public int? EventId { get; set; }
public int CandidateId { get; set; }
public string? Manifesto { get; set; }
public byte[]? Symbol { get; set; }
public string? Symbol_path { get; set; }
}
}
public List<DisplayCandidates> DisplayCandidateslist { get; set; }
[HttpGet("[action]/{GetAllCandidates}")]
public async Task<DisplayCandidatesList> DisplayAllCandidates()
{
var list_of_candidates = (from c in _context.CandidateTables
join ac in _context.ApprovedCandidateTables on c.CandidateId equals ac.CandidateId
join s in _context.SymbolTables on c.SymbolId equals s.SymbolId
where ac.Approval == true
select new
{
candidate_id = ac.CandidateId,
manifesto = c.Manifesto,
symbol_path = s.Symbol_path
}).ToList();
return list_of_candidates;
}
第一个片段是我的 class,第二个片段是我的模型,第三个片段是我的控制器。执行代码时,我在返回候选列表后出现错误
Cannot implicitly convert type
'System.Collections.Generic.List<<anonymous type: int? candidate_id,
string manifesto, string symbol_path>>' to
'Automated_VotingSystem.Models.DisplayCandidatesList'
我不确定你想在这里做什么,但看起来 ;您不需要“DisplayCandidatesList”class,您只需要一个“DisplayCandidates”class。
如果你在另一个 class 中使用这个 class 作为列表的形式,那么使用那个列表而不是列表? ,不过我猜这里你不需要那个。
你的列表方法可以 return "Task" 那样,
我建议你学习 C# 中的集合和泛型主题
并且不要在控制器操作中使用该命名检查命名标准
https://restfulapi.net/resource-naming/
您的 DisplayAllCandidates 方法需要一个 DisplayCandidates 列表。因此,使用显式类型 DisplayCandidates 而不是匿名并将操作 return 类型更改为 List< DisplayCandidate >>。并且由于它是异步操作,因此最好使用异步 return
public async Task<List<DisplayCandidates>> DisplayAllCandidates()
{
return await (from c in _context.CandidateTables
....
select new DisplayCandidates
{
CandidateId = ac.CandidateId,
Manifesto = c.Manifesto,
Symbol_path = s.Symbol_path
}).ToListAsync();
namespace Automated_VotingSystem.Models
{
public class DisplayCandidatesList
{
public List<DisplayCandidates>? DisplayCandidateslist { get; set;}
}
}
namespace Automated_VotingSystem.Models
{
public partial class DisplayCandidates
{
public int VoterId { get; set; }
public int? CollegeId { get; set; }
public int? EventId { get; set; }
public int CandidateId { get; set; }
public string? Manifesto { get; set; }
public byte[]? Symbol { get; set; }
public string? Symbol_path { get; set; }
}
}
public List<DisplayCandidates> DisplayCandidateslist { get; set; }
[HttpGet("[action]/{GetAllCandidates}")]
public async Task<DisplayCandidatesList> DisplayAllCandidates()
{
var list_of_candidates = (from c in _context.CandidateTables
join ac in _context.ApprovedCandidateTables on c.CandidateId equals ac.CandidateId
join s in _context.SymbolTables on c.SymbolId equals s.SymbolId
where ac.Approval == true
select new
{
candidate_id = ac.CandidateId,
manifesto = c.Manifesto,
symbol_path = s.Symbol_path
}).ToList();
return list_of_candidates;
}
第一个片段是我的 class,第二个片段是我的模型,第三个片段是我的控制器。执行代码时,我在返回候选列表后出现错误
Cannot implicitly convert type 'System.Collections.Generic.List<<anonymous type: int? candidate_id, string manifesto, string symbol_path>>' to 'Automated_VotingSystem.Models.DisplayCandidatesList'
我不确定你想在这里做什么,但看起来 ;您不需要“DisplayCandidatesList”class,您只需要一个“DisplayCandidates”class。 如果你在另一个 class 中使用这个 class 作为列表的形式,那么使用那个列表而不是列表? ,不过我猜这里你不需要那个。
你的列表方法可以 return "Task" 那样,
我建议你学习 C# 中的集合和泛型主题
并且不要在控制器操作中使用该命名检查命名标准
https://restfulapi.net/resource-naming/
您的 DisplayAllCandidates 方法需要一个 DisplayCandidates 列表。因此,使用显式类型 DisplayCandidates 而不是匿名并将操作 return 类型更改为 List< DisplayCandidate >>。并且由于它是异步操作,因此最好使用异步 return
public async Task<List<DisplayCandidates>> DisplayAllCandidates()
{
return await (from c in _context.CandidateTables
....
select new DisplayCandidates
{
CandidateId = ac.CandidateId,
Manifesto = c.Manifesto,
Symbol_path = s.Symbol_path
}).ToListAsync();