2011-07-09 183 views
0

如何,我想绑定我的2我的下拉列表基于ProductID,它的可用大小和可用的颜色,因此,如果用户选择灰色说,只有大小可用灰色将出现,反之亦然大小。我正在尝试下面的linq语句,显然它会抛出“LINQ to Entities does not recognized the method'System.String ToString()'method”,我不确定linq构造是否正确。任何人都可以请指教?谢谢。嵌套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")); 
      } 
     } 
    } 
} 

回答

1

你试图做的是更经常与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(); 

但是,如果没有一个了解你的域似乎功能,增加了加盟并不/过滤任何贡献检索不同的颜色列表。