嵌套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"));
            }
        }
    }
}

嵌套linq选择

你想做的事情往往是通过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似乎对检索不同的颜色列表没有任何帮助。