C# 嵌套选择查询I主选择查询LINQ

C# 嵌套选择查询I主选择查询LINQ,c#,linq,C#,Linq,我几乎不使用LINQ,而是使用MSDAAB作为DAL,用于执行内联sql查询或db存储过程等。现在我需要使用LINQ从datatable提取数据 这里我附上一个屏幕截图,如我的数据的样子: 数据来自sql server,我正在使用下面的sql server查询。请先看我的查询 select (select count(*) as incoming from tridip_Interval where direction='I' and CONVERT(datetime,right([Call

我几乎不使用LINQ,而是使用MSDAAB作为DAL,用于执行内联sql查询或db存储过程等。现在我需要使用LINQ从datatable提取数据

这里我附上一个屏幕截图,如我的数据的样子:

数据来自sql server,我正在使用下面的sql server查询。请先看我的查询

select 
(select count(*) as incoming from tridip_Interval where direction='I' 
and CONVERT(datetime,right([Call Start],8)) >='08:30:00' 
and CONVERT(datetime,right([Call Start],8)) <='09:00:00' 
and Is_Internal=0 and continuation=0 and 
RIGHT(convert(varchar,[call duration]),8)<> '00:00:00' 
and party1name='Train5') as incoming, 

(select count(*) as OutGoing from tridip_Interval where direction='O' 
and CONVERT(datetime,right([Call Start],8)) >='08:30:00' 
and CONVERT(datetime,right([Call Start],8)) <='09:00:00' 
and Is_Internal=0 and continuation=0  
and party1name not in ('Voice Mail') 
and party1name='Train5') as OutGoing, 

(select count(*) as CallTransfer from tridip_Interval where continuation=1  
and CONVERT(datetime,right([Call Start],8)) >='08:30:00' 
and CONVERT(datetime,right([Call Start],8)) <='09:00:00' 
and RIGHT(convert(varchar,[call duration]),8)<> '00:00:00' and 
party1name not in ('Voice Mail') 
and party1name='Train5') as CallTransfer, 

(SELECT count(*) as UnansweredCalls_DuringBusinessHours 
from tridip_Interval where direction='I' and 
CONVERT(datetime,right([Call Start],8)) >='08:30:00' 
and CONVERT(datetime,right([Call Start],8)) <='09:00:00' 
and RIGHT(convert(varchar,[call duration]),8)= '00:00:00' 
and [Ring duration]>0 and party1name='Train5') as misscall
现在我想使用LINQ来查询数据表,但是我不擅长LINQ,所以不能用LINQ组合上面的类似sql的查询。所以我想知道是否有人能帮我用linq编写上面的查询


如果不能突出显示我的linq查询,我深表歉意,因为老实说,我对linq知之甚少,这就是为什么我没有想到如何用linq组合上面相同的sql查询。正在寻找hep和支持。

Linq的过程就是针对不同的数据列表

第一步是使用ORM对象关系映射器,如Entity Framework EF。通过EF将表和存储过程平凡地映射到实体中,人们可以专注于显示或处理数据

因此,这就是Linq现在的用途,因为EF将使每个表都成为一个数据列表

我建议学习Linq最好的工具之一是开发人员专业编辑器,名为。使用具有object intellisense高级功能的Linqpad,它是手工制作linq查询的最佳工具

一个人如何学习Linq

从正在执行的表的10个实体开始,然后运行该工具。看看数据。然后添加一个.Where子句并再次查看显示的数据。注意,Linqpad.Dump上有一个特定于工具的扩展,可以显示数据

了解“选择”,它是投影扩展。投影意味着将当前数据列表投影到新的内容中。可以是新的匿名实体,也可以是要返回的特定类的新实例列表

继续添加到查询,直到创建了要实现的动态实体

但我主要在SQL中工作

还是用SQL思考

Linqpad将向您显示生成的SQL,该SQL是由Linq执行以实现其结果的。还可以对数据库运行SQL查询!一个包含原始SQL查询的窗口和一个帮助学习的窗口Linq如何

这一好处可能会给开发Linq查询提供一些见解

这就是我在林克教会自己思考的方式,我从未回头


最近,我在题为《SQL查询》的文章中介绍了如何使用存储过程和EF来实现linq的最终目标。

我只需要让EF运行SQL查询,所以您所需要的只是一个可以表示该输出的C对象。context.Database.SqlQueryHi是我的朋友。她也这样问我,但我帮不了她。因此,如果可能的话,给她一些提示,试着为她的场景编写一个linq示例。