计算字段属性在列中显示的次数

时间:2015-10-15 08:45:57

标签: c# asp.net-mvc linq count

我正在尝试计算使用Lambda或Linq在我的桌子上的列中显示的值的次数。

这是我的表格属性

public class Vote
{
    [Key]
    public int VoteId { get; set; }

    public int CandidateId { get; set; }

    public int CategoryId { get; set; }

    public string Id { get; set; }
    public int ParticipantId { get; set; }
    public DateTime datecreated { get; set; }
}

所以在我的控制器中我正在做这个

public ActionResult Index(int? CategoryId, string Id)
{
    List<VoteCan> agc = new List<VoteCan>();
    if(CategoryId.HasValue)
    {
        var allcategory = db.Votes.ToList().FindAll(x => (x.CategoryId == CategoryId.Value) && (x.Id == Id)).ToList();
        //I want to count how many Candidates are in the Votes table using the candidateId
    }

    return View();
}

例如,我希望有类似的东西

CandidateNo      Count
21358              3
21878              4

1 个答案:

答案 0 :(得分:0)

您需要按CategoryId分组。使用GroupBy: -

List<VoteCan> results = db.Votes.GroupBy(x => x.CandidateId)
                      .Select(x => new VoteCan
                                  {
                                      CandidateNo = x.Key,
                                      Count = x.Count()
                                  }).ToList();

假设VoteCan班级有CandidateNo&amp; Count属性。