2017-05-05 5 views
1

でLINQを使用する方法:私は2つのドロップダウンリスト持っているのDropDownList

  • 選択したインデックスのいずれかが0より大きい場合は、使用します。私は次の操作を実行するためにLINQを設定するにはどうすればよい

    <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> 
    

    をそれ以外の場合はすべてを選択します。

私は次のことをやった:

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 ==を(0、次に howManyTimesためにその値を使用しより DropDownList1の選択したインデックスが大きい場合(ドロップダウンリスト2の選択されたインデックスが0より大きい場合、whatDateには を使用し、それ以外の場合はwhatDateを選択します))(en => new { en.TheID、 en.GetFile、en.GetLink});

私はそれを完了する際にいくつかの援助を得ることができますか?

+0

私は1つのLINQクエリ内のすべてのそれらを置きたいのだが、私はそれがハァッ可能だとは思いませんか? – Si8

答えて

1

選択したインデックスのいずれかが0より大きい場合は、条件を使用します。それ以外の場合はすべてを選択します。

あなたは述語をすることによってこれを達成することができますがdropdownlist1.SelectedIndex <= 0常にtrue何かに評価:

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

これはうまくいく可能性があります。投稿に感謝します。だから、別のドロップダウンリストを別の '||'で追加するか、複数の 'Where()'を持つ方が簡単で推奨されますか? – Si8

+0

別のドロップダウンリストを*持っていることが何を意味するのか分かりません。最初にこれが機能するか試してみてください。次に*別のドロップダウンリスト*を手に入れて、さらに助けが必要な場合は新しい質問をしてください。 –

+0

実際それはまだ同じ質問の一部です:)。それは動作しているようですが、2番目のドロップダウンの別の条件が正しく機能しませんでした。私はあなたのコードで私の質問を更新しました... – Si8

関連する問題