我有这个linq to sql查询我想转换为linq到实体
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 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
编译器抱怨LINQ to Entities无法识别方法&#39; Int32。 ToInt32(System.String)&#39;方法,并且此方法无法转换为商店表达式。请帮帮我。
答案 0 :(得分:1)
数据库不知道函数Convert.ToInt32
,但您可以使用AsEnumerable()
将数据移动到内存中并在那里进行转换。如果我正确地记住了我的VB(我很可能没有),那应该这样做;
Dim bedspace =
(From bed In HMS.Beds Where bed.BedName.Contains("ward") Select bed.Bedname)
.AsEnumerable()
.Select(Function(bedname) Convert.ToInt32(bedname.Substring(4).ToString))
答案 1 :(得分:0)
尝试类似这样的东西,我附近没有编译器,但这不太可能
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
答案 2 :(得分:0)
我只是这样做,编译器没有再抱怨。
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