Asp.net 本地序列不能在LINQ到SQL实现中使用
这就是我要做的。我有DB的表格和一个成员列表。我从asp.net成员资格控件获取成员,它是一个组合的成员资格和配置文件对象。我有一个函数,它将返回以下Mems对象的列表:Asp.net 本地序列不能在LINQ到SQL实现中使用,asp.net,linq,Asp.net,Linq,这就是我要做的。我有DB的表格和一个成员列表。我从asp.net成员资格控件获取成员,它是一个组合的成员资格和配置文件对象。我有一个函数,它将返回以下Mems对象的列表: Public Property FirstName As String = "" Public Property LastName As String = "" Public Property Address1 As String = "" Public Property Address2 As String = "" Pub
Public Property FirstName As String = ""
Public Property LastName As String = ""
Public Property Address1 As String = ""
Public Property Address2 As String = ""
Public Property City As String = ""
Public Property State As System.Int32 = "0"
Public Property Zip As String = ""
Public Property Title As String = ""
Public Property Phone As System.Decimal = "0"
Public Property Id As System.Int32 = "0"
Public Property UserType As System.Int32 = "0"
Public Property SSN As System.Int32 = "0"
Public Property Email As String = ""
Public Property UserName As String = ""
Public Property IsLockedOut As Boolean = False
Private Loaded As Boolean = False
然后我有两张工作和账户表:
工作
帐目
AccountId numeric(18,0)
CompanyId numeric(18,0)
ContactId varchar(256)
Type int
Name varchar(256)
Address1 varchar(50)
Address2 varchar(50)
City varchar(50)
State int
Zip varchar(5)
AuthCode varchar(10)
Comments text
我试图实现的输出是一个特定公司ID账户的工作列表,其中包含来自mems的信息。我让它在其他地方为客户工作,但当我把工作放在组合中时,它会给我以下错误:
Local sequence cannot be used in LINQ to SQL implementations of query operators except the Contains operator.
下面是我从函数中得到的结果:
<System.Web.Services.WebMethod(EnableSession:=True)> _
Public Shared Function JobSearch(jSon As String) As String
Dim DamnSer As New JavaScriptSerializer
Dim Search As SearchString = DamnSer.Deserialize(Of SearchString)(jSon)
Dim myDB As New MyDbDataContext
Dim pro As New Mems(HttpContext.Current.User.Identity.Name)
Dim acc = From a In myDB.Accounts Where a.CompanyId = pro.Id Select a
Dim accList = acc.Where(Function(r) r.AccountId).[Select](Function(r) r.AccountId.ToString()).ToArray()
Dim q = From u In Util.GetMems Join a In acc On a.ContactId Equals u.UserName
Where u.FirstName.ToLower.Contains(Search.FirstName.ToLower) And
u.LastName.ToLower.Contains(Search.LastName.ToLower) And
a.Name.ToLower.Contains(Search.Name.ToLower) And
a.ContactId.ToLower.Contains(Search.Email.ToLower) And
u.Phone.ToString.Contains(Search.Phone.ToLower) And
a.AccountId.ToString.Contains(Search.AccountId.ToLower)
Select New With {.FirstName = u.FirstName,
.LastName = u.LastName,
.Name = a.Name,
.Email = u.Email,
.Phone = u.Phone,
.AccountId = a.AccountId,
.City = a.City,
.State = (From s In myDB.States Where s.StateId = a.State Select s.StateAbbr).Single
}
'This is the only line i added between what I have working and this new section and it is where the error happens
Dim qq = From j In myDB.Jobs Where accList.Contains(j.AccountId) Select New With {j.JobId, j.Name, (From z In q Where z.AccountId = j.AccountId).Single}
Return DamnSer.Serialize(qq)
End Function
_
公共共享函数JobSearch(jSon作为字符串)作为字符串
Dim DamnSer作为新的JavaScriptSerializer
Dim Search As SearchString=DamnSer
将myDB设置为新的MyDbDataContext
Dim pro作为新的Mems(HttpContext.Current.User.Identity.Name)
Dim acc=来自myDB.Accounts中的a,其中a.CompanyId=pro.Id选择a
Dim accList=acc.Where(函数(r)r.AccountId)。[选择](函数(r)r.AccountId.ToString()).ToArray()
Dim q=从Util.GetMems中的u加入a上的acc。ContactId等于u.UserName
其中u.FirstName.ToLower.Contains(Search.FirstName.ToLower)和
u、 包含(Search.LastName.ToLower)和
a、 Name.ToLower.Contains(Search.Name.ToLower)和
a、 ContactId.ToLower.Contains(Search.Email.ToLower)和
u、 包含(Search.Phone.ToLower)和
a、 AccountId.ToString.Contains(Search.AccountId.ToLower)
用{.FirstName=u.FirstName选择New,
.LastName=u.LastName,
.Name=a.Name,
.Email=u.Email,
.Phone=u.Phone,
.AccountId=a.AccountId,
.城市,
.State=(从myDB.States中的s开始,其中s.StateId=a.State选择s.StateAbbr)。单个
}
“这是我在工作内容和新章节之间添加的唯一一行,也是错误发生的地方
Dim qq=来自myDB.Jobs中的j,其中accList.Contains(j.AccountId)使用{j.JobId,j.Name(来自q中的z,其中z.AccountId=j.AccountId).Single}
返回DamnSer.Serialize(qq)
端函数
我决定用它走另一条路
<System.Web.Services.WebMethod(EnableSession:=True)> _
Public Shared Function JobSearch(jSon As String) As String
Dim DamnSer As New JavaScriptSerializer
Dim Search As SearchString = DamnSer.Deserialize(Of SearchString)(jSon)
Dim myDB As New MyDbDataContext
Dim pro As New Mems(HttpContext.Current.User.Identity.Name)
Dim acc = From a In myDB.Accounts Where a.CompanyId = pro.Id Select a
Dim q = From u In Util.GetMems Join a In acc On a.ContactId Equals u.UserName
Where u.FirstName.ToLower.Contains(Search.FirstName.ToLower) And
u.LastName.ToLower.Contains(Search.LastName.ToLower) And
a.Name.ToLower.Contains(Search.Name.ToLower) And
a.ContactId.ToLower.Contains(Search.Email.ToLower) And
u.Phone.ToString.Contains(Search.Phone.ToLower) And
a.AccountId.ToString.Contains(Search.AccountId.ToLower)
Select New With {.FirstName = u.FirstName,
.LastName = u.LastName,
.Name = a.Name,
.Email = u.Email,
.Phone = u.Phone,
.AccountId = a.AccountId,
.City = a.City,
.State = (From s In myDB.States Where s.StateId = a.State Select s.StateAbbr).Single,
.zip = a.Zip,
.Locations = (From l In myDB.Locations Where l.AccountId = a.AccountId Select New With {l.AccountId, l.Address1, l.Address2, l.City, l.Comments, l.LocationId, .State = (From s In myDB.States Where s.StateId = l.State Select s.StateAbbr).Single, l.Zip,
.JobCount = (From j In myDB.Jobs Where j.LocationId = l.LocationId Select j).Count}
)
}
Return DamnSer.Serialize(q)
End Function
_
公共共享函数JobSearch(jSon作为字符串)作为字符串
Dim DamnSer作为新的JavaScriptSerializer
Dim Search As SearchString=DamnSer
将myDB设置为新的MyDbDataContext
Dim pro作为新的Mems(HttpContext.Current.User.Identity.Name)
Dim acc=来自myDB.Accounts中的a,其中a.CompanyId=pro.Id选择a
Dim q=从Util.GetMems中的u加入a上的acc。ContactId等于u.UserName
其中u.FirstName.ToLower.Contains(Search.FirstName.ToLower)和
u、 包含(Search.LastName.ToLower)和
a、 Name.ToLower.Contains(Search.Name.ToLower)和
a、 ContactId.ToLower.Contains(Search.Email.ToLower)和
u、 包含(Search.Phone.ToLower)和
a、 AccountId.ToString.Contains(Search.AccountId.ToLower)
用{.FirstName=u.FirstName选择New,
.LastName=u.LastName,
.Name=a.Name,
.Email=u.Email,
.Phone=u.Phone,
.AccountId=a.AccountId,
.城市,
.State=(从myDB.States中的s开始,其中s.StateId=a.State选择s.StateAbbr),
.zip=a.zip,
.Locations=(从myDB中的l开始。其中l.AccountId=a.AccountId的位置使用{l.AccountId、l.Address1、l.Address2、l.City、l.Comments、l.LocationId、.State=(从myDB中的s开始,其中s.StateId=l.State选择s.StateAbr)。单选,l.Zip,
.JobCount=(从myDB.Jobs中的j开始,其中j.LocationId=l.LocationId选择j).Count}
)
}
返回DamnSer.Serialize(q)
端函数
<System.Web.Services.WebMethod(EnableSession:=True)> _
Public Shared Function JobSearch(jSon As String) As String
Dim DamnSer As New JavaScriptSerializer
Dim Search As SearchString = DamnSer.Deserialize(Of SearchString)(jSon)
Dim myDB As New MyDbDataContext
Dim pro As New Mems(HttpContext.Current.User.Identity.Name)
Dim acc = From a In myDB.Accounts Where a.CompanyId = pro.Id Select a
Dim q = From u In Util.GetMems Join a In acc On a.ContactId Equals u.UserName
Where u.FirstName.ToLower.Contains(Search.FirstName.ToLower) And
u.LastName.ToLower.Contains(Search.LastName.ToLower) And
a.Name.ToLower.Contains(Search.Name.ToLower) And
a.ContactId.ToLower.Contains(Search.Email.ToLower) And
u.Phone.ToString.Contains(Search.Phone.ToLower) And
a.AccountId.ToString.Contains(Search.AccountId.ToLower)
Select New With {.FirstName = u.FirstName,
.LastName = u.LastName,
.Name = a.Name,
.Email = u.Email,
.Phone = u.Phone,
.AccountId = a.AccountId,
.City = a.City,
.State = (From s In myDB.States Where s.StateId = a.State Select s.StateAbbr).Single,
.zip = a.Zip,
.Locations = (From l In myDB.Locations Where l.AccountId = a.AccountId Select New With {l.AccountId, l.Address1, l.Address2, l.City, l.Comments, l.LocationId, .State = (From s In myDB.States Where s.StateId = l.State Select s.StateAbbr).Single, l.Zip,
.JobCount = (From j In myDB.Jobs Where j.LocationId = l.LocationId Select j).Count}
)
}
Return DamnSer.Serialize(q)
End Function