我正在尝试使用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进行模拟,只是为了使用数据绑定。
答案 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);
}