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

时间:2014-05-23 15:50:42

标签: c# list linq attributes linq-group

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

  3. 最后,我想为每个用户分配groupCredit

  4. 有三到五名成员的团体。

    怎么做?

    这是我尝试过的。

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

    这是我不知道的。

    如何搜索相同的groupID?在我尝试的内容中,我检查所有项groupID是否为空。

1 个答案:

答案 0 :(得分:0)

虽然我同意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; }
    }