2013-06-03 106 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