对列表中的对象进行排序和分配

本文关键字:排序 分配 对象 列表 | 更新日期: 2023-09-27 18:05:03

class user    
{
    public string userID { get; set; }
    public string groupID { get; set; }
    public int individualCredit { get; set; }
    public int groupCredit { get; set; }
}

我有一个这样的列表

List<user> listUsers = new List<user>();
  1. 我想将用户与相同的groupID分组

  2. 计算groupCredit,将组内各成员的individualcredit s相加,除以组内成员数

  3. 最后我想给每个用户分配他们的groupCredit

每组有三到五个人。

怎么做?

这是我试过的。

var groupedUsers = from users in listUsers 
                   where users.groupID != "" 
                   group users by users.groupID into grouphold 
                   select grouphold ;

这是我不知道的。

如何搜索相同的groupID ?在我尝试过的所有项目中,我检查groupID是空白的。

对列表中的对象进行排序和分配

虽然我同意Sahil的评论,但这里有一个起点…

你可以使用LINQ,像这样:

        List<user> listUsers = new List<user>();
    public int groupUsersbyID(int _groupID)
    {
       var ListOfUsers = (from g in listUsers where g.groupID == _groupID select g).ToList();
       var count = ListOfUsers.Count();
       var totalCreditforGroup = 0;
       var GroupCredit = 0;
       foreach (var indidCredit in ListOfUsers)
        {
            totalCreditforGroup = totalCreditforGroup + indidCredit.individualCredit;
            GroupCredit = totalCreditforGroup / count;
        }
       return GroupCredit;
    }

    public int returnGroupID(int userId)
    {
        var GroupIDforUser = (from i in listUsers where i.userID == userId select i.groupID).FirstOrDefault();
        return GroupIDforUser;
    }
    public class user
    {
        public int userID { get; set; }
        public int groupID { get; set; }
        public int individualCredit { get; set; }
        public int groupCredit { get; set; }
    }