Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# 以其他数据类型显示数据库中的数据_C#_.net - Fatal编程技术网

C# 以其他数据类型显示数据库中的数据

C# 以其他数据类型显示数据库中的数据,c#,.net,C#,.net,所以我遇到了一个问题,我需要获取一个以字符形式存在的问题字段,并使我的站点以int值的形式读取数据,以便对其进行正确排序!我不知道该怎么做。我尝试转换它,然后尝试使用该变量,但我得到错误的重载错误 if (!String.IsNullOrEmpty(searchString)) { questions = questions.Where(q => q.Q_num.Contains(searchString) || q.Q_name.C

所以我遇到了一个问题,我需要获取一个以字符形式存在的问题字段,并使我的站点以int值的形式读取数据,以便对其进行正确排序!我不知道该怎么做。我尝试转换它,然后尝试使用该变量,但我得到错误的重载错误

if (!String.IsNullOrEmpty(searchString))
            {
                questions = questions.Where(q => q.Q_num.Contains(searchString) || q.Q_name.Contains(searchString) || q.VFP_name.Contains(searchString));
            }
            int number = Convert.ToInt32(questions.Select(q => q.Q_num));
            switch (sortOrder)
            {
                case "name_desc":
                    questions = questions.OrderByDescending(q => q.Q_name);
                    break;
                case "name":
                    questions = questions.OrderBy(q => q.Q_name);
                    break;
                case "num_desc":
                    questions = questions.OrderByDescending(q => q.Q_num);
                    break;
                default:
                    questions = questions.OrderBy(q => q.Q_num);
                    break;
            }
我得到一个错误:


中发生“System.NotSupportedException”类型的异常 EntityFramework.SqlServer.dll,但未在用户代码中处理 附加信息:LINQ to实体无法识别该方法 “Int32 ToInt32System.String”方法,此方法不能为空 翻译成商店表达式


您可以尝试这样做:var sorted=questions.OrderByq=>int.Parseq.Q_num

首先,您尝试从sql db右键进行搜索

您正在编写一些c代码,entityframework将其转换为sql查询

如果在c代码中编写Convert.Toint32someField,它将不会包含在sql查询中

正如我在这里看到的,有两种选择

这就是您尝试使用c代码进行搜索的内容,让entityframework将其转换为sql并为您带来结果

问题是您的整数字段在数据库中存储为字符串。 我建议在数据库中将Q_num字段的类型更改为integer,前提是它存储的是真正的整数。否则,在内存中的代码中转换它会有问题,因为排序和搜索涉及数据库

为搜索编写一个sql查询,根据switch case语句将排序选项放在sql查询中,并在sql查询中强制转换数值,如

var searchQuery=SELECT*FROM dbo.QuestionsTable—您的where子句和排序选项; //在交换机机箱中按部件追加订单 questions.SqlQuerysearchQuery.ToList

对于第一个选项,您可以尝试以下方法

if (!String.IsNullOrEmpty(searchString))
{
    questions = questions.Where(q => q.Q_num.Contains(searchString) || q.Q_name.Contains(searchString) || q.VFP_name.Contains(searchString)).ToList();
}

switch (sortOrder)
{
    case "name_desc":
        questions = questions.OrderByDescending(q => q.Q_name).ToList();
        break;
    case "name":
        questions = questions.OrderBy(q => q.Q_name).ToList();
        break;
    case "num_desc":
        questions = questions.OrderByDescending(q => int.Parse(q.Q_num)).ToList();
        break;
    default:
        questions = questions.OrderBy(q => int.Parse(q.Q_num)).ToList();
        break;
}

虽然每个人都试图为我回答这个问题,我也非常感谢所有的好反馈,但我决定使用一些零占位符来适应搜索。我不会说这是正确的,但这是一个解决办法,是工作中的人建议的。否则,将数据类型更改为double或int,然后在控制器中使用.tostring,以便仍然可以搜索它

if (!String.IsNullOrEmpty(searchString))
        {
            questions = questions.Where(q => q.Q_num.ToString().Contains(searchString) || q.Q_name.Contains(searchString) || q.VFP_name.Contains(searchString));
        }

        switch (sortOrder)
        {
            case "name_desc":
                questions = questions.OrderByDescending(q => q.Q_name);
                break;
            case "name":
                questions = questions.OrderBy(q => q.Q_name);
                break;
            case "num_desc":
                questions = questions.OrderByDescending(q => q.Q_num);
                break;
            default:
                questions = questions.OrderBy(q => q.Q_num);
                break;

        }

不太清楚,您真正想要实现的是什么您应该发布错误以及错误在代码中的位置。但您的linq查询问题中有一个错误,即可能有多个结果,因此无法为number指定int值。您得到的错误是什么?EntityFramework.SqlServer.dll中出现了类型为“System.NotSupportedException”的异常,但未在用户代码中处理其他信息:linq to Entities未处理识别方法'Int32 ToInt32System.String'方法,此方法无法转换为存储表达式。在什么上下文中使用此代码?我得到以下错误。我会使用int作为数据类型,但是有人已经有了一个visual fox pro应用程序,它需要这些值为String或Char{LINQ to Entities无法识别方法int ParseSystem.String'方法,并且该方法无法转换为存储表达式}那么,如果我得到一个关于丢失演员阵容的错误,演员阵容会是什么?谢谢你的帮助