根据查询编写查询 - 不使用连接

时间:2014-02-26 16:49:38

标签: vb.net linq-to-sql

我需要使用Linq to SQL查询为组合框创建数据源。

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

但这一次,我需要首先连接LastName和FirstName字段,然后按FullName排序,就像这样。

'-- 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说没有可用的字段。

我在没有问题之前根据查询编写了查询。我还连接了没有问题的字段。但显然把两者放在一起是一个问题。

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

1 个答案:

答案 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),这很好,但是如果您想要智能感知来获取您从对象集合中提取的值,那么你需要为它们指定名称。

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