Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 本地序列不能在LINQ到SQL实现中使用_Asp.net_Linq - Fatal编程技术网

Asp.net 本地序列不能在LINQ到SQL实现中使用

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

这就是我要做的。我有DB的表格和一个成员列表。我从asp.net成员资格控件获取成员,它是一个组合的成员资格和配置文件对象。我有一个函数,它将返回以下Mems对象的列表:

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