返回首页

我用"除"运营商在下面的代码。它返回的差异,但所有我得到的是的PK_PhoneTypeID(当然)。我需要填充"PhoneTypes"的下拉列表。我无法弄清楚如何返回此列,与我的"除"查询,或如何嵌套另一个查询返回的"PhoneTypes"列

这基本上是表看起来像这样:

手机
PK_ID
FK_ContactID
FK_PhoneTypeID

PhoneTypes
PK_PhoneTypeID
PhoneTypes

这里是我的"除"代码和DDL绑定:

Dim hiddenGUID As HiddenField = CType(Wizard1.FindControl("Wizardstep3$HiddenField1"), HiddenField)

 

        Dim dc As New DataClassesDataContext()

 

        Dim q = (From x In dc.PhoneTypes _

                Select x.PhoneTypeID).Except _

                    (From c In dc.Phones _

                    Where c.ContactID.ToString() = hiddenGUID.Value _

                    Select c.PhoneTypeID)

 



        'The two commented lines below is what I'm trying to do



        DropDownList2.DataSource = q

        'DropDownList2.DataTextField = "PhoneTypes"

        'DropDownList2.DataValueField = "PhoneTypeID"

        DropDownList2.DataBind()

回答

评论会员:jfclark27 时间:2012/02/06
编写一个SQL语句来做到这一点很容易,所以我决定直接使用LINQ语句的SQL

Dim q As IEnumerable(Of PhoneType) = _

        dc.ExecuteQuery(Of PhoneType) _

                ("select pt.PhoneTypeID, pt.PhoneTypes " & _

                "from PhoneTypes as pt " & _

                "where Not exists " & _

                "(select PhoneTypeID " & _

                "from phones " & _

                "where PhoneTypeID = pt.PhoneTypeID and ContactID ='" + hiddenGUID.Value + "') " & _

                "order by pt.PhoneTypeID;")

        DropDownList2.DataSource = q

        DropDownList2.DataTextField = "PhoneTypes"

        DropDownList2.DataValueField = "PhoneTypeID"

        DropDownList2.DataBind()
评论会员:游客 时间:2012/02/06
jfclark27:我一直在打了一圈,发现一个纯粹的LINQtoSQL解决方案:我希望这可以帮助别人...