求一个linq或lambda的联合查询

fayxue 2018-03-20 02:24:03

表1
userid,name
1,张三
2,李四
3,王五

表2
userid,date,state
1,2018-01-01,在
1,2018-01-02,在

查询2018-01-01所有人的状态的结果
1,张三,2018-01-01,在
2,李四,2018-01-01,null
3,王五,2018-01-01,null
...全文
408 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fifexue 2018-05-02
  • 打赏
  • 举报
回复
DefaultIfEmpty() 左连接
青稞一梦 2018-03-21
  • 打赏
  • 举报
回复

class student
{
    public int userid{get;set;}
     
    public string name{get;set;}
}
class dateState
{
    public int userid{get;set;}
     
    public string data{get;set;}
     
    public string state{get;set;}
}
public IQueryable<dynamic> GetAll() 
        {
            var ss = db.Set<student>()
                .Join(db.dateState, p => p.userid, c => c.userid, (p, c) => new { p.userid, p.name, c.data,c. state})
                .Distinct();
        }
peng2739956 2018-03-20
  • 打赏
  • 举报
回复

void Main()
{
	List<student> list=new List<student>(){new student{userid=1,name="张三"},new student{userid=2,name="李四"},new student{userid=3,name="王五"}};
	List<dateState> list1=new List<dateState>(){new dateState{userid=1,data="2018-01-01",state="在"},new dateState{userid=1,data="2018-01-02",state="在"}};
    var result = from l in list
                         join p in list1.DefaultIfEmpty(new dateState()) on l.userid equals p.userid into m						 
                         select new { userid = l.userid, name = l.name,data=m.Min(t=>t.data), state = m.Where(t => t.userid == l.userid).Select(t => t.state).FirstOrDefault() };
						 result.Dump();
}
class student
{
	public int userid{get;set;}
	
	public string name{get;set;}
}
class dateState
{
	public int userid{get;set;}
	
	public string data{get;set;}
	
	public string state{get;set;}
}

62,243

社区成员

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

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

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

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