2011-07-09 20 views
0

ProductIDに基づいて2つのドロップダウンリストをバインドしようとしています。利用可能なサイズと利用可能な色があります。したがって、ユーザーがグレーを選択した場合、グレーのサイズのみが表示され、 。私は以下のlinqステートメントを以下のように試しています。明らかに、 "LINQ to Entities"は、System.String 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")); 
      } 
     } 
    } 
} 

答えて

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(); 

しかし、理解し、ドメインなしでその参加/フィルタの追加は何も寄与していないようです明確な色のリストを検索することになります。

関連する問題