LINQ ExecuteQuery - Error

本文关键字:Error ExecuteQuery LINQ | 更新日期: 2023-09-27 18:16:10

我有问题的Executequery:错误消息:"指定的强制转换无效"。I tried do:

var qq = db.ExecuteQuery<class_search>(query, 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();
}

//我将代码更改为englanguage。现在a.column1, a.column2和k.b olc2都是字符串类型

LINQ ExecuteQuery - Error

试试IEnumerable<class_search> qq = db.ExecuteQuery<class_search>(query, ddl4, ddl5, ddl1).ToList();,看看是否有帮助。

我知道这似乎是一个挑剔,但var的行为可能是一个障碍,所以值得一试。如果这样不行,请告诉我,我会尽量适当地更新这个答案。

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

SQL中的FLOAT类型在。net CLR中不是FLOAT类型,而是double类型。事实上,float类型没有被LINQ-to-SQL提供程序映射到任何SQL类型。因此,当尝试比较class_search时,发送的参数会失败。创建对象class_search.

解决方案:将你的search_class定义改为:

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选择命令的视图并将其拖放到DBML设计器中。

sqldbml自动映射引擎在选择目标和源类型时决定正确。并使用你的代码生成的POCO类拖动视图在yourdbml.designer.cs文件,并享受它。