Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法进行字符串比较+;使用wcf发布收集_C#_Asp.net_Wcf_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

C# 无法进行字符串比较+;使用wcf发布收集

C# 无法进行字符串比较+;使用wcf发布收集,c#,asp.net,wcf,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net,Wcf,Asp.net Mvc 3,Asp.net Mvc 4,我的应用程序使用一项服务,当用户回答问题时,该服务将向客户端发送一份问卷列表,并将相同的数据分配给模型,然后发送给服务以标记分数 在服务中,我正在执行ID检查和应答检查(字符串),但是,尽管它在调试器中显示相同的数据类型和值,但比较字符串并没有返回true。有人能带我到这里吗?谢谢 public double GetMarks(List<Questionnaire> qList) { var AnsLibrary = GetAnswerLibrary();

我的应用程序使用一项服务,当用户回答问题时,该服务将向客户端发送一份问卷列表,并将相同的数据分配给模型,然后发送给服务以标记分数

在服务中,我正在执行ID检查和应答检查(字符串),但是,尽管它在调试器中显示相同的数据类型和值,但比较字符串并没有返回true。有人能带我到这里吗?谢谢

public double GetMarks(List<Questionnaire> qList) {

        var AnsLibrary = GetAnswerLibrary();
        double GetTotalNumberAnsquestion = qList.Count();

        int numberValidCorrectAns = 0;
        double result  =0;
        try {
            if (GetTotalNumberAnsquestion > 0) {
                foreach (var q in qList) {

                    string city =(q.UserAnsResponse);

                    string compare = AnsLibrary.Where(x => x.Question.QuestionId == q.QuestionId).Select(x => new { name = x.AnswerText }).SingleOrDefault().ToString();

                    //just a test to see if the compare is working
                    if (string.Compare(city, AnsLibrary[0].AnswerText) == 0) {

                        //for testing purpose
                    }

                    bool isAnswerExist = AnsLibrary.Any(x => x.Question.QuestionId == q.QuestionId);
                    if (q.isCorrectAnswer == true) {

                        if (isAnswerExist && AnsLibrary.Any(a => a.AnswerText == city)) {
                            numberValidCorrectAns++;
                        }
                    }
                    else {

                        if (isAnswerExist && !AnsLibrary.Any(x => x.AnswerText == q.UserAnsResponse)) {
                            numberValidCorrectAns++;
                        }
                    }
                }
                result = numberValidCorrectAns / GetTotalNumberAnsquestion * 100;
            }
            else {
                throw new Exception("Unable to get User Answer Questinaire");
            }
        }
        catch (Exception ex) {
            ex.ToString();
        }
        return result;
    }
}
public双GetMarks(列表qList){
var AnsLibrary=GetAnswerLibrary();
double GetTotalNumberAnsquestion=qList.Count();
int numberValidCorrectAns=0;
双结果=0;
试一试{
如果(GetTotalNumber问题>0){
foreach(qList中的var q){
字符串city=(q.UserAnsResponse);
string compare=AnsLibrary.Where(x=>x.Question.QuestionId==q.QuestionId)。选择(x=>new{name=x.AnswerText})。SingleOrDefault().ToString();
//只是一个测试,看看比较是否有效
if(string.Compare(city,AnsLibrary[0].AnswerText)==0){
//用于测试目的
}
bool isAnswerExist=AnsLibrary.Any(x=>x.Question.QuestionId==q.QuestionId);
如果(q.isCorrectAnswer==true){
if(isAnswerExist&&AnsLibrary.Any(a=>a.AnswerText==city)){
NumberValidans++;
}
}
否则{
if(isAnswerExist&!AnsLibrary.Any(x=>x.AnswerText==q.UserAnsResponse)){
NumberValidans++;
}
}
}
结果=numberValidCorrectAns/GetTotalNumberAnsquestion*100;
}
否则{
抛出新异常(“无法获取用户回答问题”);
}
}
捕获(例外情况除外){
例如ToString();
}
返回结果;
}
}
控制器:

   public ViewResult GetMarks(List<QuestionnaireViewModel>  _AnswwerQuestionaire) {

           List<Questionnaire> serviceQuestionList = new List<Questionnaire>();

        foreach(var questionaire in _AnswwerQuestionaire){
            serviceQuestionList.Add(new Questionnaire() { QuestionId=questionaire.QuestionId, UserAnsResponse=questionaire.UserAnsResponse, isCorrectAnswer=questionaire.isCorrectAnswer});
        }

        var IQservice = new IQuestionService.QuestionServiceClient();
        var result = IQservice.GetMarks(serviceQuestionList);
        if(result > 0) {
        ViewData["Marks"] = result;
        } else {
        ViewData["Error"] = "Unable to Marks your assesment";
        }
        return View(result);
    }
public ViewResult获取分数(列表-问卷调查){
List serviceQuestionList=新列表();
foreach(风险值问卷调查){
serviceQuestionList.Add(新问卷(){QuestionId=questionaire.QuestionId,UserAnsResponse=questionaire.UserAnsResponse,IsCorrectResponse=questionaire.IsCorrectResponse});
}
var IQservice=new IQuestionService.QuestionServiceClient();
var result=IQservice.GetMarks(serviceQuestionList);
如果(结果>0){
ViewData[“标记”]=结果;
}否则{
ViewData[“错误”]=“无法标记您的评估”;
}
返回视图(结果);
}
数据样本:

public static List<Answer> GetAnswerLibrary() {

        List<Answer> AnsLibrary = new List<Answer>();

        AnsLibrary.Add(new Answer() { AnswerId = 1, AnswerText = "London", Question = new Questionnaire() { QuestionId= 11 } });
        AnsLibrary.Add(new Answer() { AnswerId = 2, AnswerText = "paris", Question = new Questionnaire() { QuestionId = 22 } });
        AnsLibrary.Add(new Answer() { AnswerId = 3, AnswerText = "Warsaw", Question = new Questionnaire() { QuestionId = 33 } });
        AnsLibrary.Add(new Answer() { AnswerId = 4, AnswerText = "Port louis", Question = new Questionnaire() { QuestionId = 44 } });
        AnsLibrary.Add(new Answer() { AnswerId = 5, AnswerText = "Berlin", Question = new Questionnaire() { QuestionId = 55 } });

        return AnsLibrary;
    }
    //this is a hack normally will pull data from a data source like DB/CSV
    public static List<Questionnaire> GetQuestionLibrary() {
        List<Questionnaire> QuestionLibrary = new List<Questionnaire>();

        QuestionLibrary.Add(new Questionnaire(11) { Title = "Geo", QuestionAsk = "What is the capital of England", QuestionnaireType = 1 });
        QuestionLibrary.Add(new Questionnaire(22) { Title = "Geo", QuestionAsk = "What is the capital of France", QuestionnaireType = 1 });
        QuestionLibrary.Add(new Questionnaire(33) { Title = "Geo", QuestionAsk = "What is the capital of Poland", QuestionnaireType = 1 });
        QuestionLibrary.Add(new Questionnaire(44) { Title = "Geo", QuestionAsk = "What is the capital of Mauritius", QuestionnaireType = 1 });
        QuestionLibrary.Add(new Questionnaire(55) { Title = "Geo", QuestionAsk = "What is the capital of Germany", QuestionnaireType = 1 });

        return QuestionLibrary;
    }
公共静态列表GetAnswerLibrary(){
List ANSBLIBRARY=新列表();
添加(新答案(){AnswerId=1,AnswerText=“伦敦”,问题=新问卷(){QuestionId=11}});
添加(新答案(){AnswerId=2,AnswerText=“paris”,问题=新问卷(){QuestionId=22}});
添加(新答案(){AnswerId=3,AnswerText=“华沙”,问题=新问卷(){QuestionId=33});
添加(新答案(){AnswerId=4,AnswerText=“Port louis”,Question=new问卷(){QuestionId=44});
添加(新答案(){AnswerId=5,AnswerText=“Berlin”,问题=新问卷(){QuestionId=55}});
归还图书馆;
}
//这是一种黑客行为,通常会从DB/CSV等数据源提取数据
公共静态列表GetQuestionLibrary(){
List QuestionLibrary=新列表();
新增(新问卷(11){Title=“Geo”,QuestionAsk=“英格兰首都是什么”,QuestionnaireType=1});
新增(新问卷(22){Title=“Geo”,QuestionAsk=“法国首都是什么”,QuestionnaireType=1});
添加(新问卷(33){Title=“Geo”,QuestionAsk=“波兰首都是什么”,QuestionnaireType=1});
添加(新问卷(44){Title=“Geo”,QuestionAsk=“毛里求斯首都是什么”,QuestionnaireType=1});
新增(新问卷(55){Title=“Geo”,QuestionAsk=“德国首都是什么”,QuestionnaireType=1});
返回问题库;
}

我设法解决了这个问题,下面是我所做的修改。这有点奇怪

 public double GetMarks(List<Questionnaire> qList) {

        var AnsLibrary = GetAnswerLibrary();

        double result = 0;
        double TotalNumberofQuestion = qList.Count();
        int UserValidAnswer = 0;

        if(TotalNumberofQuestion >0) {

            var filterQuestionaire = qList.Where(q => q.UserAnsResponse != null).ToList();

            foreach (var q2 in filterQuestionaire) {


                bool checkOnlyAnswerQuestion = AnsLibrary.Any(x => x.Question.QuestionId == q2.QuestionId);

                if(checkOnlyAnswerQuestion) {

                string city = (q2.UserAnsResponse).Trim();
                string city2 = AnsLibrary.Where(x => x.Question.QuestionId == q2.QuestionId).Select(t => t.AnswerText).SingleOrDefault().Trim();

                    bool checkuserAnswer = (city == city2) ;

                    if(q2.isCorrectAnswer == true && checkuserAnswer == true){
                        UserValidAnswer++;
                    }

                    if(q2.isCorrectAnswer == false && checkuserAnswer == false) {

                        UserValidAnswer++;
                    }
                }
            }
            result = UserValidAnswer / TotalNumberofQuestion * 100;
        }
        return result;
    }
public双GetMarks(列表qList){
var AnsLibrary=GetAnswerLibrary();
双结果=0;
double TotalNumberofQuestion=qList.Count();
int UserValidAnswer=0;
如果(TotalNumberofQuestion>0){
var filterQuestionaire=qList.Where(q=>q.UserAnsResponse!=null).ToList();
foreach(筛选问卷中的变量q2){
bool checkOnlyAnswerQuestion=AnsLibrary.Any(x=>x.Question.QuestionId==q2.QuestionId);
如果(仅勾选回答问题){
字符串city=(q2.UserAnsResponse.Trim();
字符串city2=AnsLibrary.Where(x=>x.Question.QuestionId==q2.QuestionId)。选择(t=>t.AnswerText)。SingleOrDefault().Trim();
bool checkuserAnswer=(city==city2);
如果(q2.isCorrectAnswer==true&&checkuserAnswer==true){
UserValidAnswer++;
}
如果(q2.isCorrectAnswer==false&&checkuserAnswer==false){
UserValidAnswer++;
}
}
}
结果=用户有效回答/问题总数*100;
}
返回结果;
}

它可能不起作用的一个原因是您“总是”