Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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# LINQ执行程序-错误_C#_Asp.net_Linq - Fatal编程技术网

C# LINQ执行程序-错误

C# LINQ执行程序-错误,c#,asp.net,linq,C#,Asp.net,Linq,我在执行方面有问题: 错误消息:“指定的强制转换无效”。我试着做: var qq = db.ExecuteQuery<class_search>(query, ddl4, ddl5, ddl1).ToList(); var qq=db.ExecuteQuery(查询,ddl4,ddl5,ddl1).ToList(); 但同样的错误也存在。我试过几种方法。当我尝试执行IEnumerable时,总是出现此错误或“查询结果不能多次枚举”。我读了很多文章,但我不知道怎么做。我做错了什么,

我在执行方面有问题: 错误消息:“指定的强制转换无效”。我试着做:

var qq = db.ExecuteQuery<class_search>(query, ddl4, ddl5, ddl1).ToList();
var qq=db.ExecuteQuery(查询,ddl4,ddl5,ddl1).ToList();
但同样的错误也存在。我试过几种方法。当我尝试执行IEnumerable时,总是出现此错误或“查询结果不能多次枚举”。我读了很多文章,但我不知道怎么做。我做错了什么,或者遗漏了什么

public class class_search
{
    public string path_image
    { get; set; }

    public string name_product
    { get; set; }

    public float cost
    { get; set; }
} 

public partial class Search : System.Web.UI.Page
{
    DataClasses1DataContext db = new DataClasses1DataContext();

    string ddl4 = DropDownList4.SelectedItem.Value;
    string ddl5 = DropDownList5.SelectedItem.Value;
    string ddl1 = DropDownList1.SelectedItem.Value;

    string query = "select p.path_image, p.name_product, p.cost from Table1 a, Table2  p, Table3 k where a.column1 = {0} and a.column2 = {1} and k.column2 = {2} and p.IDForeignColumn1 = k.IDcolumn and p.IDForeignColumn2 = a.IDcolumn"

    var qq = db.ExecuteQuery<class_search>(query, ddl4, ddl5, ddl1);

    ListView1.DataSource = qq;
    ListView1.DataBind();
}
公共类搜索
{
公共字符串路径\u映像
{get;set;}
公共字符串名称\u产品
{get;set;}
公共浮动成本
{get;set;}
} 
公共部分类搜索:System.Web.UI.Page
{
DataClasses1DataContext db=新DataClasses1DataContext();
字符串ddl4=DropDownList4.SelectedItem.Value;
字符串ddl5=DropDownList5.SelectedItem.Value;
字符串ddl1=DropDownList1.SelectedItem.Value;
string query=“从表1 a、表2 p、表3 k中选择p.path_image、p.name_product、p.cost,其中a.column1={0}和a.column2={1}和k.column2={2}以及p.IDForeignColumn1=k.IDcolumn和p.IDForeignColumn2=a.IDcolumn”
var qq=db.ExecuteQuery(查询,ddl4,ddl5,ddl1);
ListView1.DataSource=qq;
ListView1.DataBind();
}
//我把代码改成了英语。现在a.column1、a.column2和k.column2都是字符串类型。

试试
IEnumerable qq=db.ExecuteQuery(查询,ddl4,ddl5,ddl1).ToList()
并查看这是否有帮助

我知道这看起来像是吹毛求疵,但var的行为可能是这里的一个障碍,所以值得一试。如果这样不行,请让我知道,我会尝试适当地更新此答案


另外,请更新问题中的代码示例,以显示您的代码所使用的事件方法,正如一位评论员所建议的那样。

SQL中的浮点类型不是.Net CLR中的浮点类型,而是双精度类型。事实上,LINQtoSQL提供程序没有将浮点类型映射到任何SQL类型。因此,在尝试比较class_search.cost或尝试创建对象class_search时,发送的参数失败

解决方案:将搜索类定义更改为:

public class class_search
{
    public string path_image
    { get; set; }

    public string name_product
    { get; set; }

    public double cost
    { get; set; }
} 

您的主要问题是由Clr-DateTypeSql-Db-Type之间的不兼容引起的。 要解决此问题,您必须创建sql select命令的视图,并将其拖动到dbml设计器中


linq-to-sql dbml自动映射器引擎正确决定目标和源类型的选择,并在dbml.designer.cs文件中的拖动视图的代码生成POCO类中使用,并享受它。

在哪里定义
quote
应该是
query
?quote与query相同吗?如果不是,什么是
查询
?也许不在ExecuteQuery中强制转换任何内容,只从qq中存储的字段创建klasa_wyszukiwania对象会更容易些?请尽量避免使用波兰语,对于说英语的读者来说可能很难阅读;)
a.budowa
a.system\u operacyjny
等的SQL类型是什么。我刚刚编辑了代码并为a.column等编写了类型。您是否尝试在运行SQLProfiler时运行SQLProfiler,并针对DB检查了查询运行,返回的结果与您预期的一样?一些难以发现的bug可以通过这种方式追踪。