好的,所以我知道为什么我会遇到错误。我不知道如何解决它。基本上,如果用户没有特定的权限,我需要加入另一个表。但是 .NET 非常挑剔,我不能只在 IF 语句中进行两个不同的查询,然后在 if 语句之外使用它。我可以想到一些丑陋的解决方法,但我宁愿不这样做。我对 .NET 还很陌生,我所知道的就足够危险了。
Private Sub loadLeads()
Using db As New CRMDataDataContext(SQLConnectionString)
Dim count = 0
Dim l As IEnumerable(Of Company)
If CanViewAllLeads(User.Identity.Name, db) = True Then
Dim q = From leads In db.Companies _
Join s In db.CompanySources On s.CompanySourceID Equals leads.CompanySourceID _
Where leads.Active = True And leads.CompanyStatusID = 1 _
Select leads.CompanyID, _
leads.BusinessName, _
leads.Website, _
leads.Phone, _
leads.Fax, _
leads.LastContacted, _
leads.FollowUp, _
leads.CreatedBy, _
leads.Created, _
leads.UpdatedBy, _
leads.Updated, _
Source = s.Source
count = q.Count
l = q
Else
Dim q = From leads In db.Companies _
Join s In db.CompanySources On s.CompanySourceID Equals leads.CompanySourceID _
Join xref In db.UserCompaniesXrefs On leads.CompanyID Equals xref.CompanyID _
Where leads.Active = True And leads.CompanyStatusID = 1 And xref.UserID = NCGuid(User.Identity.Name) _
Select leads.CompanyID, _
leads.BusinessName, _
leads.Website, _
leads.Phone, _
leads.Fax, _
leads.LastContacted, _
leads.FollowUp, _
leads.CreatedBy, _
leads.Created, _
leads.UpdatedBy, _
leads.Updated, _
Source = s.Source
count = q.Count
l = q
End If
If count > 0 Then
dgLeads.DataSource = l
dgLeads.DataBind()
Else
pnlLeads.Visible = False
pnlNoLeads.Visible = True
End If
End Using
End Sub
我收到错误:无法转换类型为“System.Data.Linq.DataQuery1[VB$AnonymousType_1
11[System.Guid,System.String,System.String,System.字符串,System.String,System.Nullable1[System.DateTime],System.Nullable
1[System.DateTime],System.Nullable1[System.Guid],System.Nullable
1[System.DateTime],System.Nullable1[System.Guid],System.Nullable
1[System.DateTime]]]' 键入 'System.Collections.Generic.IEnumerable` 1[Ten11CRMLib.Company]'。
因为这样: Dim l As IEnumerable(Of Company) 它不仅仅是公司的 IEnumerable,它还有其中的源代码。我必须明确选择源才能在我的数据网格中使用它。我可以给 Dim l 做一些让它停止提示的东西吗?
最佳答案
您正在选择返回自定义类 - 匿名类型。这无法转换回您的 Customer
对象。
如果您确实需要这样做,请创建一个转换器方法(或者可能将其放在构造函数上)并传递对象并初始化匿名类型的值。使用动态作为对象类型。
关于asp.net - 使用相同变量 with/if 语句绑定(bind)不同的 LINQ 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291137/