【问题标题】:Fill Gridview using LINQ to DataSet query with alias使用 LINQ 填充 Gridview 到具有别名的 DataSet 查询
【发布时间】:2015-09-18 07:26:19
【问题描述】:

我收到以下错误。

在选定对象上找不到名为“P_ID”的字段或属性 数据源。

我想使用LINQGridview 绑定到DataSet。我有三张桌子,我想要他们的ID's。在查询中,我使用了别名,但它给了我错误,因为找不到别名。

这是我的代码

string filterSO = "SELECT " +
                         "P.ID AS P_ID, " +
                         "S.ID AS S_ID, " +                             
                         " RS.LASTNAMER | | ' ' | | RS.FIRSTNAMER AS ReferentName, " +
                         " RS.ID," +
                         " P.STATUSP" +
                        " FROM PLANNING P," +
                         " SHIPPING S," +                            
                         " REFERENT_SHIPPING RS" +                             
                       " WHERE S.ID_REFERENT = RS.ID(+)" +
                       " AND S.ID_PLANNING = P.ID" +
                       " ORDER BY P.ID DESC";
    using (OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["DBCS"].ToString()))
    {
        con.Open();
        OracleCommand cmd = new OracleCommand(filterSO, con);
        OracleDataAdapter da = new OracleDataAdapter(cmd);
        DataSet dss = new DataSet();
        da.Fill(dss, "office_all");
        Session["DATASET"] = dss;

        var officee_all = from xx in dss.Tables["office_all"].AsEnumerable()
                      select new guards
                      {
                          ID = Convert.ToInt32(xx["P_ID"]),
                          ID_S = Convert.ToInt32(xx["S_ID"]),                           

                          LASTNAME_R = xx["LASTNAMER"].ToString(),
                          FIRSTNAME_R = xx["ReferentName"].ToString(),
                          ID_R = Convert.ToInt32(xx["ID"]),
                          STATUSP = xx["STATUSP"].ToString()
                      };

        GridViewSOFirst.DataSource = officee_all.ToList();
        GridViewSOFirst.DataBind();

【问题讨论】:

  • 你到底得到了哪个错误?
  • 在所选数据源中找不到名为“P_ID”的字段或属性。

标签: c# asp.net linq linq-to-dataset


【解决方案1】:

在选定对象上找不到名为“P_ID”的字段或属性 数据来源

该消息是不言自明的,此属性在您使用的类中不可用,但显然您正在尝试绑定到此属性。

由于您在 sql 查询中选择此列,但将其分配给属性 ID,您应该改为绑定到该属性。

ID = Convert.ToInt32(xx["P_ID"])

旁注:您可以使用逐字字符串文字,这样可以更轻松地在 C# 中编写 sql 查询。我还建议使用 real/ansi 连接。甚至“Oracle 建议您使用 FROM 子句 OUTER JOIN 语法而不是 Oracle 连接运算符”link

string filterSO = @"SELECT
                     P.ID AS P_ID,
                     S.ID AS S_ID,
                     RS.LASTNAMER | | ' ' | | RS.FIRSTNAMER AS ReferentName, 
                     RS.ID,
                     P.STATUSP
                    FROM PLANNING P,
                     SHIPPING S,
                     REFERENT_SHIPPING RS
                   WHERE S.ID_REFERENT = RS.ID(+)
                   AND S.ID_PLANNING = P.ID
                   ORDER BY P.ID DESC";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多