Vb.net 基于查询编写查询-不使用连接

Vb.net 基于查询编写查询-不使用连接,vb.net,linq-to-sql,Vb.net,Linq To Sql,我需要使用Linq到SQL查询为组合框创建一个数据源 i、 e.cboFindPerson.DataSource=LQPersonList 其中LQPersonList是一个查询 但这一次,我需要首先连接LastName和FirstName字段,然后按全名排序,如下所示 '-- Create the first Query with concatenation Dim LQ = From b In DCAppMain.tblPeopleMain Where b.Peopl

我需要使用Linq到SQL查询为组合框创建一个数据源

i、 e.cboFindPerson.DataSource=LQPersonList 其中LQPersonList是一个查询

但这一次,我需要首先连接LastName和FirstName字段,然后按全名排序,如下所示

'-- 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时,intellisense说没有字段可用

我已经根据w/o问题之前的查询编写了查询。我还连接了没有问题的字段。但显然,将两者结合起来是一个问题

我已经对此搜索了几个小时,但找不到符合目标的答案。

而不是使用:

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语句中提取单个属性时,您最终会得到一个匿名类型的IEnumerableOfAnonymousType,这很好,但如果您希望intellisense提取您从对象集合中提取的值,则需要为它们指定名称


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

这是因为LQ最终将成为匿名类型的IEnumerableIn,而intellisense不会接受任何属性的设置方式。在DCAppMain.tblPeopleMain中的b尝试Dim LQ=From b,其中b.PeopleID=lngPeopleID和b.CurrentEmployee=True使用{.FullName=b.LastName&、&b.FirstName、.PeopleID=b.PeopleID}完美地选择新建!谢谢你,迈克·奥布莱恩!很高兴我能帮忙!我在下面的回答中总结了我的评论,因此如果这解决了您的问题,请确保将此问题标记为已回答。