LinqDataSource中的where参数

时间:2011-05-10 09:16:47

标签: c# .net asp.net linq-to-sql linqdatasource

我有两张桌子:

carType:
==
id
CarTypeTitle

Items
==
id
ItemTitle
CarTypeId1
CarTypeId2
CarTypeId3

如你所见,我在CarTypeId(来自Items表)和id(CarType Table)之间建立了关系,并将CarTypeId2(来自Items表)与id(CarType表)之间的关系......等等。

我有2个下拉列表,ddl1,ddl2。 ddl1表示carTypes,ddl2表示项目。我在级联中取得了成功,并且在ddl2:

的WHERE参数中工作得很好
<asp:LinqDataSource ID="LinqDataSource4" runat="server" ContextTypeName="DataClassesDataContext" EntityTypeName="" TableName="Items" Where="CarTypeId1 == @CarTypeId1">
    <WhereParameters>
        <asp:ControlParameter ControlID="ddl2" Name="CarTypeId" PropertyName="SelectedValue" Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>

当我选择cartype时,ddl2给我按照cartypeid1的项目。但我如何编写代码(WHERE参数),它将给我type2和3。

我有一些与同一购物车相关的商品,即:Wiper-bla与subaro和fat相关......所以我给他们一个subaro和fiat的购物车类型......

希望一切都清楚。

1 个答案:

答案 0 :(得分:1)

这是你在找什么?

<asp:LinqDataSource ID="LinqDataSource4" runat="server" ContextTypeName="DataClassesDataContext" EntityTypeName="" TableName="Items" Where="CarTypeId1 == @CarTypeId OR CarTypeId2 == @CarTypeId OR CarTypeId3 == @CarTypeId">
    <WhereParameters>
        <asp:ControlParameter ControlID="ddl2" Name="CarTypeId" PropertyName="SelectedValue" Type="Int32" />
    </WhereParameters>
</asp:LinqDataSource>

但是我强烈建议您更新数据模型以使用单独的表来连接CarTypes和Items。 e.g。

ItemToCarType
=============
ItemId
CarTypeId

使用此表,您可以为每个项目包含无限数量的CarTypes。并且您将简化查询,因为您不需要分别处理每个字段(例如在此示例中使用OR