linq查询语句?

csover8 2018-05-23 06:09:03
表A架构:
id name createtime
1 peter 2018-05-20
2 jame 2018-05-21
3 debbie 2018-05-20

表B架构 :

id aid dt createtime
1 1 a 2018-05-20
2 1 b 2018-05-23
3 2 c 2018-05-22
4 3 d 2018-05-21

表B中的aid关联表A, 表A与表B的关系是1:n

现在想通过createtime的范围 2018-05-20至2018-05-21,查询出记录出来:
最终结果是:
A表 1 / peter / 2018-05-20 B表 1 / 1 / a / 2018-05-20
A表 3 / debbie / 2018-05-20 B表 4 / 3 / d / 2018-05-21
如何通过linq查询出来。?谢谢。
...全文
1163 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
姓小名白丶 2018-05-25
  • 打赏
  • 举报
回复
Include语法了解一下 这种关联表 查询的时候用主表去Include关联表 然后再select映射出你想要的数据
peng2739956 2018-05-25
  • 打赏
  • 举报
回复

//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 
peng2739956 2018-05-25
  • 打赏
  • 举报
回复

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;

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧