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

I have a list like this

List<user> listUsers = new List<user>();
  1. I want to group users with same groupID.

  2. Calculate groupCredit by adding the individualcredit s of each member in group and by dividing it by the number of group members.

  3. Finally I want to assign each user with their groupCredit.

There are groups with three to five members.

How to do that?

Here's what I have tried.

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

Here's what I don't know.

How to search for the same groupID? In what I have tried I check for all Items groupID is blank.

4

1 回答 1

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; }
    }
于 2014-05-23T16:21:12.677 回答