Vb.net 将linq转换为sql查询转换为linq转换为实体

Vb.net 将linq转换为sql查询转换为linq转换为实体,vb.net,linq-to-sql,linq-to-entities,Vb.net,Linq To Sql,Linq To Entities,我有一个LINQtoSQL查询,我想转换成LINQtoEntities Dim db As New DataClasses1DataContext() Dim bedspace = (From bed In db.Beds Where SqlMethods.Like(bed.BedName,"ward%") Select Convert.ToInt32(bed.BedName.Substring(4))).ToList() If bedspace.Count &

我有一个LINQtoSQL查询,我想转换成LINQtoEntities

Dim db As New DataClasses1DataContext()
Dim bedspace = (From bed In db.Beds Where SqlMethods.Like(bed.BedName,"ward%")
                Select Convert.ToInt32(bed.BedName.Substring(4))).ToList()

If bedspace.Count <> 0 Then
    txtProvisonalDiagnosis.Text = bedspace.Max
Else
    txtProvisonalDiagnosis.Text = "try again"
End If
Dim db作为新的DataClasses1DataContext()
Dim bedspace=(从数据库bed.Beds中的bed开始,其中SqlMethods.Like(bed.BedName,“ward%”)
选择Convert.ToInt32(bed.BedName.Substring(4)).ToList()
如果是床位,数到0
TXT临时诊断.Text=床位.Max
其他的
txtProvisionalDiagnosis.Text=“重试”
如果结束
查询是有效的,但是当试图用这样的实体实现相同的东西时

Dim bedspace = From bed In HMS.Beds Where bed.BedName.Contains("ward")
                    Select Convert.ToInt32(bed.BedName.Substring(4).ToString)

If bedspace.Count <> 0 Then
    txtProvisonalDiagnosis.Text = bedspace.Max
Else
    txtProvisonalDiagnosis.Text = "am still a sucker"
End If
Dim bedspace=从HMS.Beds中的床开始,bed.BedName.Contains(“病房”)
选择Convert.ToInt32(bed.BedName.Substring(4.ToString)
如果是床位,数到0
TXT临时诊断.Text=床位.Max
其他的
txtProvisionalDiagnosis.Text=“我还是个笨蛋”
如果结束

编译器抱怨LINQ to实体无法识别方法“Int32”。ToInt32(System.String)“”方法,而此方法无法转换为存储表达式。请帮帮我。

试试这样的方法,我附近没有编译器,但这不会太远

Dim bedspace as generic.list(of integer) = (From bed In HMS.Beds Where bed.BedName.Contains("ward")
                Select bed.BedName.Substring(4).ToString).tolist

If bedspace.Count <> 0 Then
    txtProvisonalDiagnosis.Text = bedspace.Max
Else
    txtProvisonalDiagnosis.Text = "am still a sucker"
End If
Dim bedspace作为generic.list(整型)=(从HMS.Beds中的bed开始,bed.BedName.Contains(“病房”)中的bed)
选择bed.BedName.Substring(4).ToString.tolist
如果是床位,数到0
TXT临时诊断.Text=床位.Max
其他的
txtProvisionalDiagnosis.Text=“我还是个笨蛋”
如果结束

我只是这么做了,编译器没有再抱怨

  Dim bedspace = From bed In HMS.Beds Where bed.BedName.Contains("ward")
                    Select CType(bed.BedName.Substring(4), Integer)



    If bedspace.Count <> 0 Then
        txtProvisonalDiagnosis.Text = bedspace.Max
    Else
        txtProvisonalDiagnosis.Text = "am still a sucker"
    End If
Dim bedspace=从HMS.Beds中的床开始,bed.BedName.Contains(“病房”)
选择CType(bed.BedName.Substring(4),整数)
如果是床位,数到0
TXT临时诊断.Text=床位.Max
其他的
txtProvisionalDiagnosis.Text=“我还是个笨蛋”
如果结束

数据库不知道函数
Convert.ToInt32
,但您可以使用
AsEnumerable()
将数据移动到内存中,并在内存中进行转换。如果我正确地记住了我的VB(我很可能不记得),这应该可以做到

Dim床位=
(从HMS.Beds中的bed.BedName.Contains(“病房”)中的bed选择bed.BedName)
.可计算的()
.Select(函数(bedname)Convert.ToInt32(bedname.Substring(4.ToString))