2017-05-05 56 views
1

我有两个下拉列表:如何使用LINQ与DropDownList的

<asp:DropDownList ID="dropdownlist1" runat="server"> 
    <asp:ListItem>Select One</asp:ListItem> 
    <asp:ListItem>once</asp:ListItem> 
    <asp:ListItem>twice</asp:ListItem> 
    <asp:ListItem>thrice</asp:ListItem> 
</asp:DropDownList> 

<asp:DropDownList ID="dropdownlist2" runat="server"> 
    <asp:ListItem>Select One</asp:ListItem> 
    <asp:ListItem>1/22/2014</asp:ListItem> 
    <asp:ListItem>1/25/2016</asp:ListItem> 
</asp:DropDownList> 

我如何建立LINQ做到以下几点:

  • 如果任何选定的指数大于0,则使用更大条件,否则选择全部。

我做了以下内容:

GridView1.DataSource = List1 
    .Where(en => 
     en.howManyTimes == (dropdownlist1.SelectedIndex > 0 ? dropdownlist1.SelectedItem.Value : "")) 
    .Select(en => new { en.TheID, en.GetFile, en.GetLink }); 

,我只是不知道在三元运算符的:后。

这是我想什么:

GridView1.DataSource = List1.Where(EN => en.howManyTimes ==(如果 dropdownlist1选择指数是伟大的比0,则该值用于 howManyTimes ,否则选择任何howTimes)& & en.whatDate == (如果dropdownlist2选择的索引大于0,那么使用那个值 为whatDate,否则选择任何whatDate))。Select(en => new {en | en.GetFile,en.GetLink});

我可以请一些帮助完成它。

+0

我希望把它们全部存放在一个LINQ查询,但我不认为这是可能的吧? – Si8

回答

1

如果任何选定的索引大于0,则使用条件,否则选择全部。

您可以通过谓语实现这一评估的东西时dropdownlist1.SelectedIndex <= 0这总是如此:

GridView1.DataSource = List1 
    .Where(en => dropdownlist1.SelectedIndex <= 0 
       || en.howManyTimes == dropdownlist1.SelectedItem.Value) 
    .Select(en => new { en.TheID, en.GetFile, en.GetLink }); 
+0

这可能会起作用。感谢这篇文章。因此,将另一个dropdownlist添加到另一个'||',或更容易,并建议有多个'Where()'? – Si8

+0

我不知道你有什么意思*有另一个下拉列表*。请尝试,如果这为你工作的第一。然后尝试,如果你能得到*另一个下拉列表*工作,并提出一个新的问题,如果你需要额外的帮助。 –

+0

其实它仍然是同一个问题的一部分:)。它似乎正在工作,但第二个下拉菜单的另一个条件无法正常工作。我更新了我的问题,并更新了我的代码... – Si8