2014-02-26 25 views
0

我需要使用Linq to SQL查询为组合框创建数据源。根据查询编写查询 - 不使用并置

即cboFindPerson.DataSource = LQPersonList (其中LQPersonList是查询)

但是这一次,我需要第一串联姓氏和名字字段,然后为了通过全名,这个样子。

'-- Create the first Query with concatenation 
    Dim LQ = From b In DCAppMain.tblPeopleMain 
     Where b.PeopleID = lngPeopleID And b.CurrentEmployee = True 
     Select FullName = b.LastName & ", " & b.FirstName, b.PeopleID 

'-- Create the 2nd Query based on first so I can order by FullName 
    Dim LQPersonList = From c In LQ 
     Order By c. 

但是当我到C,智能说,没有栏目。

我在没有问题之前根据查询编写了查询。我也连接字段W/O问题。但显然把两者结合在一起是一个问题。

我一直在寻找这几个小时,但无法找到目标上的答案。

+0

这是因为LQ最终会成为“IEnumerable(匿名类型)”,而intellisense不会按照您设置的方式获取任何属性。尝试'Dim LQ = From b在DCAppMain.tblPeopleMain中b.PeopleID = lngPeopleID和b.CurrentEmployee = True用{.FullName = b.LastName&“,”&b.FirstName,.PeopleID = b.PeopleID} –

+0

完美!谢谢Mike_OBrien! – DanW52

+0

很高兴我能够帮助!我在下面的回答中总结了我的评论,如果这解决了您的问题,请务必将此问题标记为已回答。 –

回答

0

而不是使用:

Dim LQ = From b In DCAppMain.tblPeopleMain 
    Where b.PeopleID = lngPeopleID And b.CurrentEmployee = True 
    Select FullName = b.LastName & ", " & b.FirstName, b.PeopleID 

你需要使用:

Dim LQ = From b In DCAppMain.tblPeopleMain Where b.PeopleID = lngPeopleID And 
    b.CurrentEmployee = True Select New With{.FullName = b.LastName & ", " & 
    b.FirstName, .PeopleID = b.PeopleID} 

这是因为当你拉各个属性了LINQ声明你最终的IEnumerable(Of AnonymousType)这是很好的,但如果你想让intellisense提取你从对象集合中提取的值,那么你需要为它们分配名称。

因此,使用第二条LINQ语句基本上为匿名类型创建了一个构造函数,该构造函数还定义了构成LINQ语句返回的集合的匿名对象的属性FullNamePeopleID

+0

另外 - 感谢您的非常明确的解释! – DanW52