2013-06-03 137 views
0

我需要在這一些幫助,我怎麼寫,我想基於2列檢索記錄where子句聲明:實體框架,方法

我這是怎麼想的寫代碼:

public IList<Model.question> GetAll(string search , int search1) 
{ 
    IList<Model.question> lstQuestions = context.questions.ToList(); 
    return lstQuestions.Where(a => a.TaskName.Contains(search) && p => p.ActivityID.Contains(search1)).ToList(); 
} 

但這個聲明有錯誤。

-----以上解決------------

繼承人另一個問題:

public int GetMaxValue(string listTask , int listActivity) 
    { 

     int maxQNo = Convert.ToInt32(context.questions.Max(q => q.QuestionNo).Where(q.TaskName.Contains(listTask) && q.ActivityID == listActivity)); 

     return maxQNo+1; 
    } 

我得到其中q不存在錯誤是當前上下文,我在這裏要做的是獲取列的最大值(questionNo),其中taskname = list task和activityid = list activity。

回答

1
public IList<Model.question> GetAll(string search , int search1) 
    { 
     IList<Model.question> lstQuestions = context.questions.ToList(); 
     return lstQuestions.Where(a => a.TaskName.Contains(search) && a.ActivityID==search1)).ToList(); 
    } 

回答新問題:

添加q =>Where條款。

public int GetMaxValue(string listTask , int listActivity) 
{ 

    int maxQNo = Convert.ToInt32(context.questions.Max(q => q.QuestionNo) 
                .Where(q=>q.TaskName.Contains(listTask) && 
                 q.ActivityID.Contains(listActivity)); 

    return maxQNo+1; 
} 
+0

有您好,感謝快速回復,但我ActivityID是dB的INT,我試圖使用int搜索1,但它給我一個錯誤\t實例參數:「詮釋」無法從轉換到'System.Linq.ParallelQuery '和'int?'不包含'Contains'和最佳擴展方法重載的定義'System.Linq.ParallelEnumerable.Contains (System.Linq.ParallelQuery ,TSource)'有一些無效參數 – user2376998

+0

@ user2376998:如果ActivityID是INT '那麼爲什麼你的'search1'變量是'string'?它應該也是'INT'?對? – sarwar026

+0

對不起,忘了更改它 – user2376998