109,884
社区成员




public Form1()
{
InitializeComponent();
IList<TempNum> listTempNum = new List<TempNum>();
TempNum tempNum1 = new TempNum();
IList<string> listName1 = new List<string>();
listName1.Add("小明");
listName1.Add("小李");
tempNum1.Num1 = 16;
tempNum1.Num2 = -7;
tempNum1.Count = listName1.Count;
TempNum tempNum2 = new TempNum();
IList<string> listName2 = new List<string>();
listName2.Add("小明");
listName2.Add("小李");
tempNum2.Num1 = 16;
tempNum2.Num2 = -8;
tempNum2.Count = listName2.Count;
TempNum tempNum3 = new TempNum();
IList<string> listName3 = new List<string>();
listName3.Add("小明");
listName3.Add("小李");
tempNum3.Num1 = 17;
tempNum3.Num2 = -7;
tempNum3.Count = listName3.Count;
TempNum tempNum4 = new TempNum();
IList<string> listName4 = new List<string>();
listName4.Add("小李");
tempNum4.Num1 = 17;
tempNum4.Num2 = 1;
tempNum4.Count = listName4.Count;
TempNum tempNum5 = new TempNum();
IList<string> listName5 = new List<string>();
listName5.Add("小李");
tempNum5.Num1 = 17;
tempNum5.Num2 = 2;
tempNum5.Count = listName5.Count;
TempNum tempNum6 = new TempNum();
IList<string> listName6 = new List<string>();
listName6.Add("小明");
listName6.Add("小李");
listName6.Add("小红");
tempNum6.Num1 = 15;
tempNum6.Num2 = -10;
tempNum6.Count = listName6.Count;
TempNum tempNum7 = new TempNum();
IList<string> listName7 = new List<string>();
listName7.Add("小明");
listName7.Add("小李");
listName7.Add("小红");
tempNum7.Num1 = 15;
tempNum7.Num2 = -9;
tempNum7.Count = listName7.Count;
TempNum tempNum8 = new TempNum();
IList<string> listName8 = new List<string>();
listName8.Add("小明");
tempNum8.Num1 = -10;
tempNum8.Num2 = 18;
tempNum8.Count = listName8.Count;
TempNum tempNum9 = new TempNum();
IList<string> listName9 = new List<string>();
listName9.Add("小明");
tempNum9.Num1 = -9;
tempNum9.Num2 = 18;
tempNum9.Count = listName9.Count;
listTempNum.Add(tempNum1);
listTempNum.Add(tempNum2);
listTempNum.Add(tempNum3);
listTempNum.Add(tempNum4);
listTempNum.Add(tempNum5);
listTempNum.Add(tempNum6);
listTempNum.Add(tempNum7);
listTempNum.Add(tempNum8);
listTempNum.Add(tempNum9);
dataGridView1.DataSource = listTempNum;
}
public class TempNum
{
private int num1;
public int Num1
{
get { return num1; }
set { num1 = value; }
}
private int num2;
public int Num2
{
get { return num2; }
set { num2 = value; }
}
private IList<string> listString = new List<string>();
public IList<string> ListString
{
get { return listString; }
set { listString = value; }
}
private int count;
public int Count
{
get { return count; }
set { count = value; }
}
}
void Main()
{
IList<TempNum> listTempNum = new List<TempNum>();
TempNum tempNum1 = new TempNum();
IList<string> listName1 = new List<string>();
listName1.Add("小明");
listName1.Add("小李");
tempNum1.Num1 = 16;
tempNum1.Num2 = -7;
tempNum1.ListString=listName1; //注意此处
tempNum1.Count = listName1.Count;
TempNum tempNum2 = new TempNum();
IList<string> listName2 = new List<string>();
listName2.Add("小明");
listName2.Add("小李");
tempNum2.Num1 = 16;
tempNum2.Num2 = -8;
tempNum2.ListString=listName2;
tempNum2.Count = listName2.Count;
TempNum tempNum3 = new TempNum();
IList<string> listName3 = new List<string>();
listName3.Add("小明");
listName3.Add("小李");
tempNum3.Num1 = 17;
tempNum3.Num2 = -7;
tempNum3.ListString=listName3;
tempNum3.Count = listName3.Count;
TempNum tempNum4 = new TempNum();
IList<string> listName4 = new List<string>();
listName4.Add("小李");
tempNum4.Num1 = 17;
tempNum4.Num2 = 1;
tempNum4.ListString=listName4;
tempNum4.Count = listName4.Count;
TempNum tempNum5 = new TempNum();
IList<string> listName5 = new List<string>();
listName5.Add("小李");
tempNum5.Num1 = 17;
tempNum5.Num2 = 2;
tempNum5.ListString=listName5;
tempNum5.Count = listName5.Count;
TempNum tempNum6 = new TempNum();
IList<string> listName6 = new List<string>();
listName6.Add("小明");
listName6.Add("小李");
listName6.Add("小红");
tempNum6.Num1 = 15;
tempNum6.Num2 = -10;
tempNum6.ListString=listName6;
tempNum6.Count = listName6.Count;
TempNum tempNum7 = new TempNum();
IList<string> listName7 = new List<string>();
listName7.Add("小明");
listName7.Add("小李");
listName7.Add("小红");
tempNum7.Num1 = 15;
tempNum7.Num2 = -9;
tempNum7.ListString=listName7;
tempNum7.Count = listName7.Count;
TempNum tempNum8 = new TempNum();
IList<string> listName8 = new List<string>();
listName8.Add("小明");
tempNum8.Num1 = -10;
tempNum8.Num2 = 18;
tempNum8.ListString=listName8;
tempNum8.Count = listName8.Count;
TempNum tempNum9 = new TempNum();
IList<string> listName9 = new List<string>();
listName9.Add("小明");
tempNum9.Num1 = -9;
tempNum9.Num2 = 18;
tempNum9.ListString=listName9;
tempNum9.Count = listName9.Count;
listTempNum.Add(tempNum1);
listTempNum.Add(tempNum2);
listTempNum.Add(tempNum3);
listTempNum.Add(tempNum4);
listTempNum.Add(tempNum5);
listTempNum.Add(tempNum6);
listTempNum.Add(tempNum7);
listTempNum.Add(tempNum8);
listTempNum.Add(tempNum9);
var query=listTempNum.GroupBy(x=>string.Join(",",x.ListString.ToArray())).Select(g=>g.OrderByDescending(x=>x.Num1+x.Num2).First());
query.ToList().ForEach(q=>Console.WriteLine("{0},{1},{2}",string.Join(",",q.ListString.ToArray()),q.Num1,q.Num2));
/*
小明,小李,17,-7
小李,17,2
小明,小李,小红,15,-9
小明,-9,18
*/
}
var result =
(from tempNum in listTempNum
group tempNum by string.Join(",", tempNum.ListString) into name
select (from groupNum in name
where groupNum.Num1 == name.Max((TempNum item) => item.Num1)
select groupNum).First()).ToList();
foreach (TempNum num in result)
{
Console.WriteLine("Num2={0}, Count={1}, ListString={2}, Num1={3}",
num.Num2, num.Count, string.Join(",", num.ListString), num.Num1);
}