1。类public class TestClass
{
private string id;
private string name;
private string score;
private string Date;
//get set 方法
}2。集合TestAList<TestClass>
此集合是 score 分数大于80分的集合
3。集合TestBList<TestClass>
此集合是 Date 日期在 2009 到 2011的集合
4。声明 NewList<TestClass>集合
想用Linq 把两集合 合并成一个 并且值重复 返回结果为分数大于80分 日期在2009 到 2011的集合,然后放到新的NewList<TestClass>中
期待 linq 大神
{
private string id;
private string name;
private string score;
private string Date;
//get set 方法
}2。集合TestAList<TestClass>
此集合是 score 分数大于80分的集合
3。集合TestBList<TestClass>
此集合是 Date 日期在 2009 到 2011的集合
4。声明 NewList<TestClass>集合
想用Linq 把两集合 合并成一个 并且值重复 返回结果为分数大于80分 日期在2009 到 2011的集合,然后放到新的NewList<TestClass>中
期待 linq 大神
解决方案 »
- gridview合并列
- 如何过滤src中的恶意脚本
- 谁能给个最新的asp.netAJAX安装包?要带最新控件的。
- repeater 循环问题
- 如何读取image字段?
- 请问大家有没现成的OA系统呀,要BS架构的!
- ImageButtom如何调用HTML中input reset功能
- 哪里能找到或创建一个组织,让有共同目标的人交流共享信息?
- 请问在VS2005中,如何在一个ASPX页面上重叠2个panel控件呢?谢谢!
- 请来帮助我一下,关于DataTable使我郁闷了2天的问题(高手请进!)
- web 的TreeView怎么实现点击文字选中checkBox和点击子节点选中父节点?
- 开发时改HOST有什么用
分数大于80分 日期在2009 到 2011的同一ID的 TestClass 怎么取?
此集合存的值为
TestAList<TestClass>
{
new TestClass(){id="1",name="a",score="88"}
,new TestClass(){id="2",name="b",score="85"}
,new TestClass(){id="3",name="c",score="92"}
,new TestClass(){id="4",name="d",score="99"}
,new TestClass(){id="5",name="e",score="93"}
,new TestClass(){id="6",name="f",score="91"}}
此集合存的值为
TestBList<TestClass>
{
new TestClass(){id="1",name="a",date="2009-07-12"}
,new TestClass(){id="2",name="b",date="2009-08-02"}
,new TestClass(){id="3",name="c",date="2010-11-05"}
,new TestClass(){id="6",name="f",date="2009-09-02"}
}
这里 TestAList<TestClass> 中的集合 id name 与 TestBList<TestClass> 的id name 值是一样的 只不过 TestBList<TestClass>中有 date
我想返回 一个新的NewList<TestClass> 此集合包括
id name score date 这些值都是有值的
也就是说NewList<TestClass> 要了TestAList<TestClass>的 id name 和 score 要了
TestBList<TestClass>的 date
void Main()
{
var TestAList=new List<TestClass>
{
new TestClass{ Id=1, Name="A", Score="100", Date="1/1/2008"},
new TestClass{ Id=2, Name="B", Score="88", Date="1/2/2007"},
new TestClass{ Id=3, Name="C", Score="99", Date="1/4/2006"},
new TestClass{ Id=4, Name="D", Score="85", Date="1/5/2007"}
};
var TestBList=new List<TestClass>
{
new TestClass{ Id=1, Name="A", Score="77", Date="1/4/2009"},
new TestClass{ Id=2, Name="B", Score="70", Date="1/11/2009"},
new TestClass{ Id=3, Name="C", Score="66", Date="1/5/2010"},
new TestClass{ Id=4, Name="D", Score="55", Date="1/6/2011"}
};
var NewList=(from t in TestAList.Concat(TestBList)
group t by t.Id into g
select new TestClass
{
Id=g.Key,
Name=g.First().Name,
Score=g.OrderByDescending(m=>Convert.ToInt32(m.Score)).First().Score,
Date=g.OrderByDescending(m=>Convert.ToDateTime(m.Date)).First().Date
}).ToList();
Console.WriteLine(NewList);
}
public class TestClass
{
public int Id{get;set;}
public string Name{get;set;}
public string Score{get;set;}
public string Date{get;set;}}
看来被我猜对 了
不过我对你的类定义有些建议:
public class TestClass
{
public int Id{get;set;}
public string Name{get;set;}
public int Score{get;set;}
public DateTime Date{get;set;}}如果你这样定义的话 那么LINQ查询中就没必要先排序再取值了
直接这样即可:
var NewList=(from t in TestAList.Concat(TestBList)
group t by t.Id into g
select new TestClass
{
Id=g.Key,
Name=g.First().Name,
Score=g.Max(m=>m.Score),
Date=g.Max(m=>m.Date)
}).ToList();