使用Linq查询从DropDownList中选择ListItem

TGn*_*nat 4 asp.net linq-to-objects drop-down-menu

我试图使用Linq查询在下拉列表控件中查找和设置所选值.

 Dim qry = From i In ddlOutcome.Items _
           Where i.Text.Contains(value)


 Dim selectedItem As ListItem = qry.First

 ddlOutcome.SelectedValue = selectedItem.Value
Run Code Online (Sandbox Code Playgroud)

即使文档说DropDownList.Items集合实现IEnumerable,我在Where子句中得到一个错误,Option Strict ON不允许后期绑定!

net*_*tos 9

我可以用C#给你一个答案,我希望它可以帮助你.

使用DropDownlist方法最简单的方法,比linq查询更好:

DropDownList1.SelectedIndex = 
       DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("2"));
Run Code Online (Sandbox Code Playgroud)

如果你想要linq查询,它将是这样的:

var selected=from i in DropDownList1.Items.Cast<ListItem>()
                     where ((ListItem)i).Text.Contains("2") select i;

DropDownList1.SelectedValue = selected.ToList()[0].Text;
Run Code Online (Sandbox Code Playgroud)


mat*_*gic 5

有人想过:

foreach (ListItem li in drp.Items.Cast<ListItem>().Where(li => li.Value == ""))
{
    li.Selected = true;
}
Run Code Online (Sandbox Code Playgroud)


TGn*_*nat 2

感谢您的建议,它们都有助于我找到可行的解决方案。虽然我同意使用下拉列表本身的方法应该是可行的方法,但我对列表中项目的文本没有完全匹配,因此我需要另一种方法。

    Dim qry = From i In ddlOutcome.Items.Cast(Of ListItem)() _
              Where i.Text.Contains(value)

    qry.First().Selected = True
Run Code Online (Sandbox Code Playgroud)

linq 查询似乎比我自己迭代列表更好,我在这个过程中学到了一些东西。