62,046
社区成员
发帖
与我相关
我的任务
分享
//result
AidΞΞ BidΞΞ aidΞΞ name dt Acreatetime Bcreatetime
1 1 1 peter a 2018/5/20 0:00:00 2018/5/20 0:00:00
3 4 3 debbie d 2018/5/20 0:00:00 2018/5/21 0:00:00
void Main()
{
var a = new List<A>();
a.Add(new A() { id = 1, name = "peter", createtime = new DateTime(2018, 5, 20) });
a.Add(new A() { id = 2, name = "jame", createtime = new DateTime(2018, 5, 21) });
a.Add(new A() { id = 3, name = "debbie", createtime = new DateTime(2018, 5, 20) });
var b = new List<B>();
b.Add(new B() { id = 1, aid = 1, dt = "a", createtime = new DateTime(2018, 5, 20) });
b.Add(new B() { id = 2, aid = 1, dt = "b", createtime = new DateTime(2018, 5, 23) });
b.Add(new B() { id = 3, aid = 2, dt = "c", createtime = new DateTime(2018, 5, 22) });
b.Add(new B() { id = 4, aid = 3, dt = "d", createtime = new DateTime(2018, 5, 21) });
//Linq 语法
var linq = (from m in a
join n in b on m.id equals n.aid
where n.createtime >= new DateTime(2018, 5, 20)
&& n.createtime <= new DateTime(2018, 5, 21)
select new { Aid = m.id,Bid=n.id, aid = n.aid, name = m.name, dt = n.dt, Acreatetime = m.createtime,Bcreatetime=n.createtime }).ToList().Dump();
}
public class A
{
public int id{get;set;}
public string name{get;set;}
public DateTime createtime{get;set;}
}
public class B
{
public int id{get;set;}
public int aid{get;set;}
public string dt{get;set;}
public DateTime createtime{get;set;}
}
var a = new List<A>();
a.Add(new A() { id = 1, name = "peter", createtime = new DateTime(2018, 5, 20) });
a.Add(new A() { id = 2, name = "jame", createtime = new DateTime(2018, 5, 21) });
a.Add(new A() { id = 3, name = "debbie", createtime = new DateTime(2018, 5, 20) });
var b = new List<B>();
b.Add(new B() { id = 1, aid = 1, dt = "a", createtime = new DateTime(2018, 5, 20) });
b.Add(new B() { id = 2, aid = 1, dt = "b", createtime = new DateTime(2018, 5, 23) });
b.Add(new B() { id = 3, aid = 2, dt = "c", createtime = new DateTime(2018, 5, 22) });
b.Add(new B() { id = 4, aid = 3, dt = "d", createtime = new DateTime(2018, 5, 21) });
//Linq 语法
var linq = (from m in a
join n in b on m.id equals n.aid
where n.createtime >= new DateTime(2018, 5, 20)
&& n.createtime <= new DateTime(2018, 5, 21)
select new { id = n.id, aid = n.aid, name = m.name, dt = n.dt, createtime = m.createtime }).ToList();
//Lambda 语法
var lambda = a.Join(b, x => x.id, y => y.aid, (x, y) => new { x, y })
.Where(x => x.y.createtime >= new DateTime(2018, 5, 20) && x.y.createtime <= new DateTime(2018, 5, 21))
.Select(x => new { id = x.y.id, aid = x.y.aid, name = x.x.name, dt = x.y.dt, createtime = x.x.createtime });
var linqstr= JsonConvert.SerializeObject(linq);
var lambdastr = JsonConvert.SerializeObject(lambda);
//结果:
//[
//{"id":1,"aid":1,"name":"peter","dt":"a","createtime":"2018-05-20T00:00:00"}
//{"id":4,"aid":3,"name":"debbie","dt":"d","createtime":"2018-05-20T00:00:00"}
//]
return linqstr;