sql多列分组依据,按顺序排列到linq

时间:2012-09-28 05:28:08

标签: linq-to-entities

请帮我看看如何将下面的sql查询转换为vb.net中的Linq语句

select   distinct PATIENT_DIAGNOSIS_DESCRIPTION, PATIENT_DIAGNOSIS_CODE,
         PATIENT_DIAGNOSIS_ACCOUNT,PATIENT_DIAGNOSES_STATUS 
from     MF_PATIENT_DIAGNOSES 
where    PATIENT_DIAGNOSIS_ACCOUNT= '31'
AND      UPPER(PATIENT_DIAGNOSES_STATUS) <> 'ENTRY ERROR' 
GROUP BY PATIENT_DIAGNOSIS_DESCRIPTION, PATIENT_DIAGNOSIS_CODE, 
         PATIENT_DIAGNOSIS_ACCOUNT,PATIENT_DIAGNOSES_STATUS 
ORDER BY PATIENT_DIAGNOSIS_DESCRIPTION

1 个答案:

答案 0 :(得分:1)

我在C#中写过你可以把它转换成VB

您可以根据列类型更改字段类型,例如item.Field to Field

 var result = (from item in MF_PATIENT_DIAGNOSES.AsEnumerable()
                   where item.Field<int>("PATIENT_DIAGNOSIS_ACCOUNT") == 31 && item.Field<string>("PATIENT_DIAGNOSES_STATUS").ToUpper() != "ENTRY ERROR"
                   orderby item.Field<string>("PATIENT_DIAGNOSIS_DESCRIPTION")
                   select new
                   {
                       PATIENT_DIAGNOSIS_DESCRIPTION = item.Field<string>("PATIENT_DIAGNOSIS_DESCRIPTION"),
                       PATIENT_DIAGNOSIS_CODE = item.Field<string>("PATIENT_DIAGNOSIS_CODE"),
                       PATIENT_DIAGNOSIS_ACCOUNT = item.Field<string>("PATIENT_DIAGNOSIS_ACCOUNT"),
                       PATIENT_DIAGNOSES_STATUS = item.Field<string>("PATIENT_DIAGNOSES_STATUS "),
                   }).Distinct();

我使用此http://www.developerfusion.com/tools/convert/csharp-to-vb/转换器

进行转换
Dim result1 = (From item In MF_PATIENT_DIAGNOSES.AsEnumerable() Where item.Field(Of Integer)("PATIENT_DIAGNOSIS_ACCOUNT") = 31 AndAlso item.Field(Of String)("PATIENT_DIAGNOSES_STATUS").ToUpper() <> "ENTRY ERROR"Order By item.Field(Of String)("PATIENT_DIAGNOSIS_DESCRIPTION")New With { _
Key .PATIENT_DIAGNOSIS_DESCRIPTION = item.Field(Of String)("PATIENT_DIAGNOSIS_DESCRIPTION"), _
Key .PATIENT_DIAGNOSIS_CODE = item.Field(Of String)("PATIENT_DIAGNOSIS_CODE"), _
Key .PATIENT_DIAGNOSIS_ACCOUNT = item.Field(Of String)("PATIENT_DIAGNOSIS_ACCOUNT"), _
Key .PATIENT_DIAGNOSES_STATUS = item.Field(Of String)("PATIENT_DIAGNOSES_STATUS ") 
}).Distinct()