0

How, I am trying to bind my 2 of my dropdownlist based on a ProductID and it's available size and available color hence if a user selects say grey, only sizes available for grey will appear and vice versa for the size. I am trying the below linq statement below, apparently it throws a "LINQ to Entities does not recognize the method 'System.String ToString()' method", I am not sure if the linq construction is right either. Can anyone please advice? Thanks.

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

1 Answer 1

1

What you're trying to do is more often achieved with a 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();

However, without an understanding your domain it doesn't seem the addition of that join/filter contributes anything to retrieving the distinct list of colors.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.