public class User
{
public int UserID {get; set;}
public string UserName {get; set;}
public int Points {get; set;}
}
现在有一个List<User> list = new List<User>
从数据库读取数据不断添加到list中,过程略。。现在想从集合中选出Points之和大于100的项来。例如:
ID: 5 Name: Jack Point: 70
ID: 5 Name:Jack Point: 40
ID为5的JackPoints之和为110,满足要求。想用linq来实现,请大家帮帮忙。最好用LINQ,其他方法也可以。谢啦!
{
public int UserID {get; set;}
public string UserName {get; set;}
public int Points {get; set;}
}
现在有一个List<User> list = new List<User>
从数据库读取数据不断添加到list中,过程略。。现在想从集合中选出Points之和大于100的项来。例如:
ID: 5 Name: Jack Point: 70
ID: 5 Name:Jack Point: 40
ID为5的JackPoints之和为110,满足要求。想用linq来实现,请大家帮帮忙。最好用LINQ,其他方法也可以。谢啦!
void Main()
{
List<User> list = new List<User>
{
new User{ UserID=5, UserName="Jack Point", Points=70},
new User{ UserID=5, UserName="Jack Point", Points=40},
new User{ UserID=6, UserName="Jack Point1", Points=20},
};
var result=from u in list
group u by u.UserID into g
where g.Sum(m=>m.Points)>100
select g;
}
public class User
{
public int UserID {get; set;}
public string UserName {get; set;}
public int Points {get; set;}
}
void Main()
{
List<User> list = new List<User>
{
new User{ UserID=5, UserName="Jack Point", Points=70},
new User{ UserID=5, UserName="Jack Point", Points=40},
new User{ UserID=6, UserName="Jack Point1", Points=20},
};
var result=from u in list
group u by u.UserID into g
where g.Sum(m=>m.Points)>100
from u in g
select u;
result.ToList().ForEach(u=>Console.WriteLine("{0}\t{1}\t{2}",u.UserID,u.UserName,u.Points));
/*
5 Jack Point 70
5 Jack Point 40
*/
}
public class User
{
public int UserID {get; set;}
public string UserName {get; set;}
public int Points {get; set;}
}
List<User> list = new List<User>();
//list.Add(..
//最好自己内部实现排序、分组的功能
//简单实现一下,仅记录符合条件的UserID
Hashtable idHS = new Hashtable();//存放UserID集合
List<int> selUserIDList = new List<int>();//存放符合条件的UserID集合
for(int i = 0; i < list.Count; i++)
{
User curUser = list[i];
int curID = curUser.UserID;
int curPoints = curUser.Points;
if(!idHS.Keys.Contains(curID)) idHS.Add(curID,curPoints);
else
{
idHS[curID] = (int)idHS[curID] + curPoints;
}
}
foreach(int cID in idHS.Keys)
{
int temPoints = (int)idHS[cID];
if(temPoints > 100) selUserIDList.Add(cID);
}
//这样,符合条件的UserID已经保存在selUserIDList中了