LINQ to XML绑定到asp.Net DropDownList

时间:2014-01-31 22:05:34

标签: c# asp.net linq

我正在尝试使用LINQ,因此我可以将其绑定到ASP.NET下拉列表。

到目前为止;就我的LINQ表达而言,这就是我所拥有的;我是LINQ的新手,今天早上我开始学习它。

 county.DataSource = (from taxUnit in TaxUnits.Descendants("CodeData")
    join taxType in TaxTypes.Descendants("CodeData")
      on
      taxUnit.Attribute("taxuntype").Value
      equals
      taxType.Attribute("codeid").Value
    where taxType.Attribute("taxuntypky").Value == "CO"
    select new
    {
      County = taxUnit.Attribute("desc"),
      CodeID = taxUnit.Attribute("codeid")
    });

  county.DataTextField = "desc";
  county.DataValueField = "codeid";

  county.DataBind();

最初我试图将其转换为数据表;我被告知你实际上可以直接LINQ到DropDownList绑定。

          <asp:Label AssociatedControlID="county" runat="server">County</asp:Label>
          <asp:DropDownList
            ID="county"
            runat="server" />

到目前为止结果是...当我看下拉框时。根据我从LINQPad获得的内容,我希望

County CodeID 
Willow County 1 
CP2 TU 2

当前答案的唯一问题是我不知道它是如何工作的,因此我不明白如何将其转换为我想要的。

我以前能够使用指向此方法的ObjectDataSource,并为List进行模拟,只是为了使用数据绑定。

1 个答案:

答案 0 :(得分:1)

如果实际问题是 - 如何将LINQ to XML结果绑定到DropDownList,那么这是我旧的ASP.NET项目中的代码。我将LINQ to Entities结果绑定到GridView上。对于DropDownList应该以相同的方式工作:

public IEnumerable<IDraft> Get(int accountId, DateTime startDate, DateTime endDate)
{
    using (var db = new ModelContainer())
    {
        var account = db.Accounts.SingleOrDefault(a => a.ID == accountId);
        return (from d in account.Drafts
                let date = d.Date.Date
                where startDate.Date <= date && date <= endDate.Date
                orderby d.Date ascending
                select d).ToArray();
    }
}

protected void gridView_OnDataBinding(object sender, EventArgs e)
{
    ((IDataBoundControl)sender).DataSource = IoC.Resolve<IOperationRepository>().GetShared(this.ObjectId.Value, ucChooseDate.StartDate, ucChooseDate.EndDate);
}