Linq to sql Linq到Sql 3与group和min()连接

Linq to sql Linq到Sql 3与group和min()连接,linq-to-sql,Linq To Sql,我正在尝试将下面的SQL转换为Linq。我还没有弄清楚GROUPBY、MIN或额外的组织连接条件的语法 选择不同的o.OrganizationHierarchyUnitLevelThreeNm,o.OrganizationHierarchyUnitLevelFourNm,a.LabAssetSerialNbr,MINa.SystemCreatedDonDTM MinCreated 来自vw_DimLabAsset a 在a.LabassetAsignedToWorkerKey=w.WorkerK

我正在尝试将下面的SQL转换为Linq。我还没有弄清楚GROUPBY、MIN或额外的组织连接条件的语法

选择不同的o.OrganizationHierarchyUnitLevelThreeNm,o.OrganizationHierarchyUnitLevelFourNm,a.LabAssetSerialNbr,MINa.SystemCreatedDonDTM MinCreated 来自vw_DimLabAsset a 在a.LabassetAsignedToWorkerKey=w.WorkerKey上的内部连接vw\U FactWorker w w.OrganizationHierarchyKey=o.OrganizationHierarchyKey上的内部联接vw_DimOrganizationHierarchyKey o 并且o.OrganizationHierarchyUnitLevelThreeNm不为空 并且o.OrganizationHierarchyUnitLevelFourNm不为空 按o.OrganizationHierarchyUnitLevelThreeNm、o.OrganizationHierarchyUnitLevelFourNm、a.LabAssetSerialNbr分组 到目前为止,我已经做到了这一点:

var pphw=来自Vw_DimLabAsset中的a a.LabAssetHardwareStatus!=退休&a.LabAssetHardwareSubStatus==null | | a.LabAssetHardwareSubStatus!=归档和类型.Containsa.LabAssetTypeNm//a.LabAssetTypeNm==u|cmdb_ci_prototype_system|a.LabAssetTypeNm==u|cmdb_ci| 将w加入a.LabAssetAssignedToWorkerKey上的Vw_FactWorker等于w.WorkerKey 在w上的Vw_DimOrganizationHierarchyKey中加入o。OrganizationHierarchyKey等于o.OrganizationHierarchyKey 选择新建{o.OrganizationHierarchyUnitLevelThreeNm,o.OrganizationHierarchyUnitLevelFourNm,a.LabAssetSerialNbr};
以下是我将如何翻译查询:

var ans = (from a in vw_DimLabAsset
           join w in vw_FactWorker on a.LabAssetAssignedToWorkerKey equals w.WorkerKey
           join o in vw_DimOrganizationHierarchy on w.OrganizationHierarchyKey equals o.OrganizationHierarchyKey
           where o.OrganizationHierarchyUnitLevelThreeNm != null && o.OrganizationHierarchyUnitLevelFourNm != null
           group new { o, a } by new { o.OrganizationHierarchyUnitLevelThreeNm, o.OrganizationHierarchyUnitLevelFourNm, a.LabAssetSerialNbr } into oag
           select new {
               oag.Key.OrganizationHierarchyUnitLevelThreeNm,
               oag.Key.OrganizationHierarchyUnitLevelFourNm,
               oag.Key.LabAssetSerialNbr,
               MinCreated = oag.Min(oa => oa.a.SystemCreatedOnDtm)
           }).Distinct();

也许我的建议会有所帮助?文本本身并没有完全解决我的问题,但是你给出的例子解决了,所以谢谢!除了获得类型安全性之外,使用LINQtoSQL与只使用原始SQL相比还有什么优势吗。从长远来看,原始sql似乎更受支持,因为大多数人更容易理解。LINQ to sql的主要优点是类型安全和防止许多常见的sql注入类型安全问题,以及将应用程序与数据库类型或引擎特性隔离开来。它还帮助程序员熟悉他们可以在内存和数据库中使用的函数式编程概念。我还认为C程序员比任何SQL更容易理解和移植,因为它是语言的一部分。在概念上也有一些增强,例如组连接、let和与本地计算的合并,这使一些事情变得更容易。是的,这也是我最后得到的。谢谢