首页 > 解决方案 > 根据条件对结果进行分组

问题描述

我正在尝试按“ SSN ”对结果进行分组。然后结果将循环显示在视图中。我对此很陌生,不确定解决此问题的正确方法是什么。我不确定我应该在这里显示多少代码。如果您想查看更多代码,请告诉我。请如果有人可以查看错误并提供一些帮助。

错误信息:

严重性代码描述项目文件行错误 CS0029 无法将类型“System.Collections.Generic.List>”隐式转换为“System.Collections.Generic.List”CardDistroE:\wwwroot\CardDistro\CardDistro\Controllers\CardsController.cs 119

CardController.cs

    List<Card> QueriedBatchList;
    DBEntities db = new DBEntities();
    QueriedBatchList = db.Cards.Where(x => x.BatchID == null).GroupBy(x => x.SSN).ToList();

    CardViewModel CardViewModel = new CardViewModel();
    List<CardViewModel> CardDataList = QueriedBatchList.Select(x => new CardViewModel
    {
        CardID = x.CardID,
        SSN = x.SSN,
        PortID = x.PortID,
        UserID= x.UserID,
        Created= x.Created,
    }).ToList();

CardViewModel.cs

public class CardViewModel
{
    public int CardID { get; set; }
    public string SSN { get; set; }
    public int PortID { get; set; }
    public Nullable<int> TransactionID { get; set; }
    public int AddedUserID { get; set; }
    public System.DateTime Created { get; set; }
    public Nullable<int> BatchID { get; set; }

    public virtual Card Cards1 { get; set; }
    public virtual Card Card1 { get; set; }
    public virtual Batch Batch { get; set; }
    public virtual Port Port { get; set; }
    public virtual Transaction Transaction { get; set; }
    public virtual User User { get; set; }

}

标签: c#asp.net-mvc

解决方案


您应该Select在分组后申请。您应该选择Card实体集合。例如:

QueriedBatchList = db.Cards
    .Where(x => x.BatchID == null)
    .GroupBy(x => x.SSN)
    .Select(x => x.FirstOrDefault())
    .ToList();

此查询将分组并选择每个组CardsSSN第一条记录。


推荐阅读