嵌套linq选择
本文关键字:选择 linq 嵌套 | 更新日期: 2023-09-27 18:01:33
如何,我试图绑定我的2我的下拉列表基于一个ProductID,它的可用大小和可用颜色,因此,如果用户选择说灰色,只有灰色可用的大小会出现,反之亦然的大小。我正在尝试下面的linq语句,显然它会抛出"linq到实体不识别方法"系统。字符串ToString()'方法',我不确定linq结构是否正确。有人能给点建议吗?谢谢。
if (!Page.IsPostBack)
{
using (CommerceEntities db = new CommerceEntities())
{
int tempNum; // ----> The ProductId
if (Int32.TryParse(litTypeSel.Text, out tempNum))
{
if ((ddlColor.SelectedValue == "") && (ddlSize.SelectedValue == ""))
{
ddlColor.DataSource = (from p in db.ProductTypes
where p.ProductID == tempNum && (p.Size == (from s in db.ProductTypes select s.Size).ToString())
orderby p.Color
select new { p.Color }).Distinct();
ddlColor.DataTextField = "Color";
ddlColor.DataBind();
ddlColor.Items.Insert(0, new ListItem("Select Color", "NA"));
ddlSize.DataSource = (from p in db.ProductTypes
where p.ProductID == tempNum && (p.Color == (from c in db.ProductTypes select c.Color).ToString())
orderby p.Size descending
select new { p.Size }).Distinct();
ddlSize.DataTextField = "Size";
ddlSize.DataBind();
ddlSize.Items.Insert(0, new ListItem("Select Size", "NA"));
}
}
}
}
你想做的事情往往是通过join
:
ddlColor.DataSource = (from p in db.ProductTypes
join pt in db.ProductTypes
on p.Size equals s.Size
where p.ProductID == tempNum
orderby p.Color
select new { p.Color }).Distinct();
但是,如果不了解您的域,添加join/filter似乎对检索不同的颜色列表没有任何帮助。