C# 以其他数据类型显示数据库中的数据
所以我遇到了一个问题,我需要获取一个以字符形式存在的问题字段,并使我的站点以int值的形式读取数据,以便对其进行正确排序!我不知道该怎么做。我尝试转换它,然后尝试使用该变量,但我得到错误的重载错误C# 以其他数据类型显示数据库中的数据,c#,.net,C#,.net,所以我遇到了一个问题,我需要获取一个以字符形式存在的问题字段,并使我的站点以int值的形式读取数据,以便对其进行正确排序!我不知道该怎么做。我尝试转换它,然后尝试使用该变量,但我得到错误的重载错误 if (!String.IsNullOrEmpty(searchString)) { questions = questions.Where(q => q.Q_num.Contains(searchString) || q.Q_name.C
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'方法,并且该方法无法转换为存储表达式}那么,如果我得到一个关于丢失演员阵容的错误,演员阵容会是什么?谢谢你的帮助