C# 无法转换隐式类型Syste.Linq.IQueryable<&书信电报;匿名类型int>&燃气轮机;到
我有一个SQL查询:C# 无法转换隐式类型Syste.Linq.IQueryable<&书信电报;匿名类型int>&燃气轮机;到,c#,linq,sql-to-linq-conversion,C#,Linq,Sql To Linq Conversion,我有一个SQL查询: SELECT project_id,count(project_id) as vote_count from Votes group by project_id; 用LINQ语法编写: public int GetCountOfVotes() { using (var db = new SafetyFundDbContext(Options)) { var result = db.Votes .GroupBy(
SELECT project_id,count(project_id) as vote_count
from Votes
group by project_id;
用LINQ语法编写:
public int GetCountOfVotes()
{
using (var db = new SafetyFundDbContext(Options))
{
var result = db.Votes
.GroupBy(vote => vote.ProjectId)
.Select(group => new
{
ProjectID = group.Key,
Count = group.Count()
});
return result;
}
}
和C#返回错误:
问题出在哪里?
结果
是匿名类型的可枚举项,而不是单个int。您需要返回单个值。由于您需要单个项目的投票,因此需要通过传递ID告诉函数哪个项目:
public int GetCountOfVotes(int projectId)
{
using (var db = new SafetyFundDbContext(Options))
{
return db.Votes
.Where(vote => vote.ProjectId == projectId)
.Count();
}
}
如果需要对所有项目进行投票,则需要将返回类型更改为具体类,例如:
public class ProjectVotes
{
public int ProjectID { get; set; }
public int Votes { get; set; }
}
您的方法变成:
public IEnumerable<ProjectVotes> GetCountOfVotes()
{
using (var db = new SafetyFundDbContext(Options))
{
return db.Votes
.GroupBy(vote => vote.ProjectId)
.Select(group => new ProjectVotes
{
ProjectID = group.Key,
Votes = group.Count()
})
.ToList();
}
}
public IEnumerable GetCountOfVoces()
{
使用(var db=new SafetyFundDbContext(选项))
{
返回db.投票
.GroupBy(投票=>vote.ProjectId)
.选择(组=>新项目投票
{
projectd=group.Key,
投票数=组计数()
})
.ToList();
}
}
结果
是一个匿名类型的可枚举项,而不是单个的int
,为什么您希望它工作?我需要添加或更改什么才能工作解决方案?那么,您想在这里返回什么?所有项目的总票数是多少?每个项目的票数是多少?一个项目的票数是多少?一个(单个)项目的票数是多少:)Lol,im sry,我的错,但在一个页面中,我有5个项目,每个项目都需要votecount