C# 使用where方法查找列的最大值

C# 使用where方法查找列的最大值,c#,entity,C#,Entity,还有一个问题: 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; }

还有一个问题:

 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。

您的语法有点不正确:您需要将
q=>
添加到
where
函数中,并更改函数的顺序,以便
Max
是链中的最后一个函数

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

您忘记将
q=>
放在
Where
station

中,在
Where
子句中添加
q=>
块,而且由于您现在正在使用列表,您还需要将
==
替换为
Contains

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;
}

您尚未指定q作为where的输入lambda@user2376998当前位置我已经在你的旧帖子中回答了我编辑了你的标题。请参见“”,其中共识是“不,他们不应该”。您不想在
.where()
之后添加
.Max()
.Max()
立即执行查询。