2012-06-21 36 views
0

我試圖找到正確的代碼隱藏以顯示列表框如果選擇了一個或多個某些複選框列表項目。該複選框列表是從實體數據源創建的,並且該源的SQL表還具有指示該選擇是否應顯示列表框的字段。呼!該表是這樣的:如果選中的複選框列表項在LINQ結果中,則顯示列表框

GUID grade_level show_college_list 
(gen) 12   0 (bit) 
(gen) College  1 

的ASP是這樣的:

 <asp:EntityDataSource ID="GradeLevelEntityDataSource" runat="server" 
      ConnectionString="name=NewCourseRequestDataEntities" 
      DefaultContainerName="NewCourseRequestDataEntities" EnableFlattening="False" 
      EntitySetName="grade_levels" OrderBy="it.grade_level_description"> 
     </asp:EntityDataSource> 
     <asp:Label ID="Label7" cssClass="leftlabel" runat="server" text="Grade Level (check all that apply):"></asp:Label> 
     <asp:CheckBoxList ID="GradeLevelCheckBoxList" runat="server" cssClass="horizontalcontrols" 
      DataSourceID="GradeLevelEntityDataSource" 
      DataTextField="grade_level_description" DataValueField="grade_level_id" AutoPostBack="True" 
      OnSelectedIndexChanged="CollegeInstitutionsListboxChange" 
      RepeatDirection="Horizontal" RepeatLayout="Flow"> 
     </asp:CheckBoxList> 

如果學院被選中,我想要的機構列表框面板應該顯示。 這是多遠,我已經得到的代碼:

 if (sender != null) 
      { 
       foreach (ListItem grade in GradeLevelCheckBoxList.Items) 
       { 
        if (grade.Selected == true) 
        { 
         NewCourseRequestDataEntities context = new NewCourseRequestDataEntities(); 
         var guids = from g in context.grade_levels where g.show_college_list == true select g; 

         if (guids.Contains(new Guid(grade.Value))) 
         { 
          testselected.Text = grade.Value; //for testing 
          CollegeInstitutionsSelectPanel.Visible = true; 
         } 
        } 
       } 
      }   

我收到這2個錯誤contains方法。我不知道他們的意思。

錯誤1個實例參數:無法從 'System.Linq.IQueryable' 轉換爲 'System.Linq.ParallelQuery' Y:\的Visual Studio \新課程要求\ NewCourseRequestForm.aspx.cs 146 34新課程要求

錯誤2'System.Linq.IQueryable'不包含'Contains'的定義和最佳擴展方法重載'System.Linq.ParallelEnumerable.Contains(System.Linq.ParallelQuery,TSource)'有一些無效參數Y:\ visual studio \ New Course Request \ NewCourseRequestForm.aspx.cs 146 34新課程要求

任何人都可以幫忙嗎?

+0

基於這些錯誤,有涉及更多的代碼。例如,我猜測有一個AsParallel()調用。你可以重現使用Linq到具有靜態數組的對象的行爲嗎? – neontapir

+0

這個代碼示例中的方法是什麼? – TheGeekYouNeed

回答

0

嘗試(對於Error2-我不明白的地方的ERROR1是來自...):

if(guids.Where(x=>x==new Guid(grade.Value)).FirstOrDefault()!=null) 
{ 
    //etc 
} 
0

找到它 -

 NewCourseRequestDataEntities context = new NewCourseRequestDataEntities(); 
    var guids = (from g in context.grade_levels where g.show_college_list == true select g**.grade_level_id**).ToList(); 

         bool contains = guids.Contains(new Guid(grade.Value)); 
         if (contains) 
         { 
          CollegeInstitutionsSelectPanel.Visible = true; 
         } 
         else 
         { 
          CollegeInstitutionsSelectPanel.Visible = false; 
         } 

我沒有指定的GUID表中的字段。我有'選擇g'應該有'* select g.grade_level_id *'(這是Guid字段)。不知道如果我需要的ToList ...

0

這應該做的伎倆(輕微修改。凡(...)答案):

foo.Visible = guids.Any(x=>x==new Guid(grade.Value)

相關問題